现在许多的网站都是需要登录验证后才能访问该网站的页面,爬虫(网络机器人【spider】)该怎么获取这些页面呢!是的,爬虫也是需要登录的,才能获取到后面的页面。
对于登陆情况的处理
2.1使用表单登陆
这种情况属于post请求,即先向服务器发送表单数据,服务器再将返回的cookie存入本地。
data ={'data1':'XXXXX', 'data2':'XXXXX'}
Requests:data为dict,json
import requests
response = requests.post(url=url,data=data)
Urllib2:data为string
import urllib, urllib2
data = urllib.urlencode(data)
req = urllib2.Request(url=url,data=data)
response = urllib2.urlopen(req)
2.2使用cookie登陆
使用cookie登陆,服务器会认为你是一个已登陆的用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解决。
importrequests
requests_session= requests.session()
response =requests_session.post(url=url_login, data=data)
若存在验证码,此时采用response =
requests_session.post(url=url_login, data=data)是不行的,做法应该如下:
response_captcha= requests_session.get(url=url_login, cookies=cookies)
response1
= requests.get(url_login) # 未登陆
response2
= requests_session.get(url_login) # 已登陆,因为之前拿到了Response Cookie!
response3
= requests_session.get(url_results) # 已登陆,因为之前拿到了Response Cookie!