【python】【爬虫】selenium模块使用cookie登录

目录

使用Session对象获取cookies

使用selenium模块获取cookies实现自动登录

获取cookies

使用cookies自动登录

存在的问题


在以前的文章中实现了向服务器发送POST请求模拟登录的操作【发送post请求】,但遇到验证码等情况时该方法就没用了。但我们可以使用当前登录账号的cookie信息,以实现下次访问该网站时自动登录

可以利用抓包或F12,在Network页面中找到当前登录的cookies信息,但这个方法获取的cookies值不一定可以直接使用。在这里学习中提供了两种自动获取cookies并使用cookies状态实现登录的方法。

使用Session对象获取cookies

使用request模块中的Session对象发送请求以获取当前的cookies信息,再次使用该对象访问该网址时,会直接使用上次记录下来的cookie信息,不再需要携带其他登录参数。

import requests
session = requests.Session()    #实例化对象
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
data = {'userName':'12312451235', 'password':'123456'}    # 字典形式录入登录信息,这里要先看F12
url = 
  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python爬虫中,Cookie是一种用于在客户端和服务器之间传递信息的技术。在爬取网站时,有些网站需要登录才能获取数据,这时就需要使用Cookie来模拟登录状态。一般情况下,我们可以使用requests库来发送HTTP请求,并在请求头中添加Cookie信息。具体使用方法可以参考requests库的文档。另外,也可以使用第三方库如Selenium来模拟浏览器行为,自动获取Cookie信息。需要注意的是,使用Cookie时需要遵守网站的相关规定,不得进行非法操作。 ### 回答2: Python爬虫中,HTTP Cookie是一种跟踪用户身份、记录用户行为的机制。它可以存储在客户端,也可以存储在服务端。一般来说,使用Python爬虫抓取网站内容时,需要使用Cookie模拟登录,或者在爬虫请求过程中使用Cookie来保持登录状态,从而绕过一些反爬虫的限制。下面是关于使用Python爬虫Cookie的一些注意点。 一、设置Cookie 1、手动添加CookiePython的requests包中,可以使用cookies字典来设置Cookie。例如: import requests cookies = {'name': 'python', 'age': '20'} response = requests.get('http://www.example.com', cookies=cookies) 2、使用requests.Session()自动处理Cookie 当我们使用requests.Session()发起HTTP请求时,会自动处理Cookie。例如: import requests session = requests.Session() session.post('http://www.example.com/login', data={'username': 'admin', 'password': '123456'}) response = session.get('http://www.example.com/profile') 二、获取CookiePython的requests包中,可以使用response.cookies来获取Cookie。例如: import requests response = requests.get('http://www.example.com') cookies = response.cookies print(cookies) 三、保存CookiePython的requests包中,可以使用response.cookies来获取Cookie,然后使用pickle或者json等模块Cookie进行序列化保存起来。例如: import requests import pickle response = requests.get('http://www.example.com') cookies = response.cookies with open('cookies.pickle', 'wb') as f: pickle.dump(cookies, f) 四、加载CookiePython的requests包中,可以使用requests.cookies.RequestsCookieJar.from_dict()或者pickle等模块来加载Cookie。例如: import requests import pickle with open('cookies.pickle', 'rb') as f: cookies = pickle.load(f) response = requests.get('http://www.example.com', cookies=cookies) 五、更新CookiePython的requests包中,可以使用dict.update()方法来更新Cookie。例如: import requests cookies = {'name': 'python', 'age': '20'} cookies.update({'gender': 'male'}) response = requests.get('http://www.example.com', cookies=cookies) 六、删除CookiePython的requests包中,可以使用dict.pop()方法来删除Cookie。例如: import requests cookies = {'name': 'python', 'age': '20'} cookies.pop('name') response = requests.get('http://www.example.com', cookies=cookies) 七、使用Chrome插件获取Cookie 可以使用Chrome的EditThisCookie插件来获取Cookie,并将Cookie保存为json格式。在Python的requests包中,可以使用json模块来加载Cookie。例如: import requests import json with open('cookies.json', 'r') as f: cookies = json.load(f) response = requests.get('http://www.example.com', cookies=cookies) 总之,对于使用Python爬虫来抓取网站内容,Cookie是非常重要的。需要仔细了解Cookie使用方法和注意事项,才能够更加高效稳定地完成数据抓取任务。 ### 回答3: python爬虫使用范围越来越广泛,由于许多网站需要用户登录才能访问其中的内容,因此需要在爬虫使用cookie来模拟登录状态。在爬虫编写中,可使用requests或者是urllib库来实现cookie使用。下面我们来了解一下cookie使用方法。 1.使用requests库实现cookie使用 (1)登录请求 使用requests发送登录请求时,需要穿过用户名和密码,在请求头中添加User-Agent和Referer参数。 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'http://xxxx.com' } data = { 'username': 'username', 'password': 'password' } login = s.post(url, headers=headers, data=data) (2)获取cookie登录成功后,可通过response.cookies.get_dict()获取cookie字典,键为cookie的名称,值为cookie的值。 cookie_dict = login.cookies.get_dict() (3)使用cookie 在获取到cookie后,可直接将cookie字典作为参数加入到后续请求中,例如: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'http://xxxx.com', 'Cookie': '; '.join([key + '=' + value for key, value in cookie_dict.items()]) } content = s.get(url, headers=headers) 2.使用urllib库实现cookie使用 urllib与requests用法有所不同,cookie使用需要使用HTTPCookieProcessor模块,步骤如下: (1)创建一个opener cookieJar = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookieJar)) (2)登录请求 在发送登录请求时,需要在请求头中添加User-Agent和Referer参数,用户名和密码需要通过urlencode编码后添加到请求数据中。 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'http://xxxx.com' } data = { 'username': 'username', 'password': 'password' } login = opener.open(url, headers=headers, data=urllib.parse.urlencode(data).encode('utf-8')) (3)使用cookie 当成功登录后,可以在后续请求中直接使用创建好的opener对象,如: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Referer': 'http://xxxx.com' } content = opener.open(url, headers=headers) 总的来说,cookie能模拟用户登录状态,便于访问页面。但在实际使用中,应尽量使用网站提供的API或者数据接口。使用cookie可能会被网站识别为爬虫,有可能会被限制访问或者被封IP,因此应该在使用前咨询网站管理员的意见。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值