欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆

程序员文章站 2022-07-14 11:11:15
...

在爬取某些数据时,需要进行网页的登陆,才可以进行数据的抓取工作。Cookies登陆就像很多网页中的自动登陆功能一样,可以让用户第二次登陆时不在需要验证账号和密码的情况下进行登陆。在requests模块中实现Cookies登陆时,首先需要在浏览器的开发者工具中找到可以实现登陆的Cookies信息,然后将Cookies信息处理并添加至RequestsCookieJar的对象中,最后将RequestsCookieJar对象作为网络请求的Cookies参数发送网络请求即可。

登陆前F12打开开发者工具,然后点击登陆,在Network中点击Name为www.douban.com的标签,然后找到Request Headers 找到Cookie和Referer 把数据填写到代码响应的位置,然后执行如下代码:

爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆

import requests#导入网络请求模块
from lxml import etree#导入lxml模块
from requests.cookies import RequestsCookieJar

cookies = 'bid=pjgLNxf4l58; gr_user_id=3810b31e-93ac-4218-8854-beb0a92270f3; _vwo_uuid_v2=D723216EF67BD847DE34C8293BBE9E476|580f3421ba24bf6f046142cfc8687e24; ll="118177"; __yadk_uid=QGASRU74csarwZMirNUKV2UKBsgYb1jE; douban-fav-remind=1; __utmv=30149280.21866; douban-profile-remind=1; __utmz=30149280.1606616223.6.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __gads=ID=ea2ae52b8181609a-22edd78d4cc200fc:T=1593688576:RT=1593688576:R:S=ALNI_MZie4Sb8bYIKcULjos76IVwiLehCA; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1606700574%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DdebQUs80fHnuan4dSHOFIclPn6nRfmywWRzpgSnxoEQPNMcF4PvJpy6HRBbBsHonagTUyVIVFfQc2_fFDT25QK%26wd%3D%26eqid%3Dbb0850e80003e0bc000000055fc30448%22%5D; _pk_id.100001.8cb4=0f4e7ccad794e91b.1593688463.6.1606700574.1606616222.; _pk_ses.100001.8cb4=*; __utma=30149280.1002979081.1587122057.1606616223.1606700575.7; __utmc=30149280; __utmt=1; __utmb=30149280.1.10.1606700575; dbcl2="226532095:bJULCGInIN8"'#此处填写登陆后网页中的Cookies信息
headers = {
    'Host': 'www.douban.com',
    'Referer': 'https://accounts.douban.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'
}
#创建requestsCookieJar对象,用于设置Cookies信息
cookies_jar = RequestsCookieJar()
for cookie in cookies.split(';'):
    key,value = cookie.split('=', 1)
    cookies_jar.set(key,value)#将Cookies保存requestsCookieJar当中
#发送网络请求
response = requests.get('http://www.douban.com/',headers=headers,cookies=cookies_jar)
if response.status_code==200:
    html = etree.HTML(response.text)#解析HTML代码
    #获取用户名
    name = html.xpath('//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]/text()')
    print(name[0])#打印用户名

输出结果:
戴上微笑的帐号 #此处应该显示的是你登陆时候的账号的用户名