设置cookie与session是为了在爬取某些需要登陆后才能进行查看的网页,比如人人网的个人主页,就必须要登陆之后才可以进行查看。因此就需要进行cookie的设置。
cookie的设置:
import requests
base_url = 'http://www.renren.com/PLogin.do'
#设置请求头,伪装浏览器进行访问
headers = {
#设置用户代理
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0'
}
data = {
'email':'1xxxxxxxxxx',
'password':'1xxxxxxxxxx'
}
#将用户名与密码以字典形式保存,跟随参数一起发送给服务器
reponse = requests.post(url=base_url,data=data,headers=headers)
contents = reponse.content.decode('utf-8')
with open('人人网.html','w',encoding='utf-8')as f:
f.write(contents)
由于我们是模拟浏览器访问服务器,没有办法进行cookie的保存,难以避免的在登录之后如果想要跳转到另一个页面继续访问,就会被恢复到未登录状态。因此这时候就需要用到session了,它可以保持我们的登录状态,就像是我们真的在浏览器中登录自己的账号一样。
import requests
base_url = 'http://www.renren.com/PLogin.do'
#在登录之后仍然需要进行访问的页面
re_base_url = 'http://www.renren.com/971291501/newsfeed/origin'
haders = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0'
}
data = {
'email':'18768867576',
'password':'1948336909'
}
#创建session对象
s = requests.Session()
#使用session对象以post形式发送请求信息
s.post(base_url,data=data,headers=haders)
#需要再次访问的网页则以get方式请求
r = s.get(re_base_url)
contents = r.content.decode('utf-8')
with open('session人人网.html','w',encoding='utf-8')as f:
f.write(contents)