python实现登录抓取_python requests 模拟登陆网站,抓取数据

抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据。

首先我们需要通过手动方式来登陆一下,查看一下如何请求登陆

通过下图我们看到真正处理请求的页面是login.php,登陆成功以后跳转到index.php页面,下面我们来模拟一下。

616077-20170407153428191-2030270270.jpg

代码实现

LOGIN_URL = 'http://yingxiao.chewumi.com/login.php' #请求的URL地址

DATA = {"username":'accountID',"passwd":'passwd'} #登录系统的账号密码,也是我们请求数据

HEADERS={'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' #模拟登陆的浏览器

}

RES= requests.post(LOGIN_URL,data=DATA,headers=HEADERS) #模拟登陆操作

print (RES.text) #打印返回的文本信息

下来我们请求其他的页面看一下效果

RES1 = requests.get("http://yingxiao.chewumi.com/show.php?id=64621190")print(RES1.text)

616077-20170407154655175-1813880363.jpg

此时我们登陆成功再次请求其他的页面的时候,发现无法请求到对应的页面,意味到刚才的模拟登陆只对当前的操作起作用,那么如何使用下面的请求继续有效。实际过程中我们知道session过期,我们需要重新登陆,那么我们第一次登陆成功session,只对当前有效,所以我们再次登录就登陆失败,那么我们需要在session有效期内,把session保存,然后再次去请求其他的页面。

defGet_Session(URL,DATA,HEADERS):'''保存登录参数'''ROOM_SESSION=requests.Session()

ROOM_SESSION.post(URL,data=DATA,headers=HEADERS)returnROOM_SESSION

SESSION=Get_Session(LOGIN_URL,DATA,HEADERS)#保存session后再次请求对应的地址

RES2 = SESSION.get("http://yingxiao.chewumi.com/show.php?id=64621190")print(RES2.text)

616077-20170407155541863-547616490.jpg

此时我们看到已经可以请求到对应的页面了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值