使用cookie和session对页面进行爬取

当我们所需要爬取的数据需要验证登录时,则会用到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)

猜你喜欢

转载自blog.csdn.net/weixin_44303465/article/details/89575021
今日推荐