当我们所需要爬取的数据需要验证登录时,则会用到post的请求方式来进行登录,
比如我们今天爬取开心网界面的信息
使用cookie进行抓取数据
找到对应界面,我们需要找到登录所需要的关键字段的信息,即账户和密码的字段id,name,class(优先级)等
同时因为我们提交上的信息是在一个表单中,我们还要找到对应的表单中的action
登陆成功以后 我们则需要首页,或者其他界面的信息 ,就要说使用cookie对其进行访问
找到cookie 我们将其复制下来,并将其修改为字典的格式
headers= {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
# Accept-Encoding:gzip, deflate
'Accept-Language':'zh-CN,zh;q=0.9',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Cookie':'_ref=5cc16a05886b8; _cpmuid=1995622809; SERVERID=_srv80-125_; _vid=C86BC34611600001D51217701D9615A5; _reg_src=sogou_www_link; _preemail=15910620193; noFocusContent=1; onlinenum=c%3A0; APUG_played181850114=true; _laid=0; _uid=181850114; _user=8ec437263ca89f3c2b402ea16e660ea9_181850114_1556196196; _email=15910620193; _sso=181850114; wpresence=70O2ZBOO0Tnkqcz9GSHIFCoggNMTsZcTXMGraQ.ZGZ0MTgxODUwMTE0',
'Host':'www.kaixin001.com',
'If-Modified-Since':'Thu, 25 Apr 2019 12:22:04 GMT',
'If-None-Match':'app-1556194924-gzip',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6824.400 QQBrowser/10.3.3127.400',
}
接下来进行我们需要的界面的访问
response = requests.get(url='http://www.kaixin001.com/home/?uid=181850114',headers=headers)
with open('cookie.html','w',encoding='utf-8') as fp:
fp.write(response.text)
2 使用session抓取数据
使用cookie让代码变得臃肿,比较麻烦 ,但是使用session就会轻松许多
我们只需要提交我们的账户信息和密码,并且将session这种会话技术利用,就会很好的处理
直接上代码
import requests
import os
login_url = 'https://security.kaixin001.com/login/login_post.php'
parm_dic = {
'loginemail': '18915926184',
'password': '123456'
}
session = requests.Session()
response = session.post(url=login_url, data=parm_dic)
response2 = session.get(url='http://www.kaixin001.com/home/?_profileuid=181850114&t=48')
with open('session.html', 'w', encoding='utf-8') as fp:
fp.write(response2.text)