python爬虫之使用cookie爬取登录后的界面、使用cookieFileJar保存cookie文件、cookie读取

本文介绍了Python爬虫中如何利用Cookie进行登录和访问登录后界面,包括Cookie与Session的区别、Cookie的属性、如何保存和读取Cookie到文件。通过FileCookieJar实例学习了如何自动使用和管理Cookie,实现模拟登录。
摘要由CSDN通过智能技术生成

1、cookie & session简介

-由于http协议的无记忆性,人们为了弥补这个这个缺憾,所采用的一个补充协议

-cookie是发放给用户(即http浏览器)的一段信息(通常记录用户身份),session是保存在服务器上的对应的另一半信息,用来记录用户信息

(1)cookie和session的区别

-存放位置不同

-cookie不安全

-session会保存在服务器上一定时间,会过期

-单个cookie保存数据不超过4K,很多浏览器限制一个站点最多保存20个

(2)session的存放位置

-存在服务器端

-一般情况,session是放在(想要速度快的话放内存)内存中或者(默认放)数据库中

-没有cookie登录,可以看到,没有使用cookie则反馈网页为未登录状态

from urllib import request
if __name__ == '__main__':
    url = "https://www.renren.com/965187997/profile"
    #req = request.Request(url)
    rsp = request.urlopen(url)
    html = rsp.read().decode()

'''
UnicodeEncodeError: 'gbk' codec can't encode character '\ue600' in position 145620: illegal multibyte sequence
解决:改为utf-8
'''
with open("rsp.html","w") as f:
    f.write(html)

2、cookie登录、访问、属性、保存

(1)直接把cookie复制下来,然后手动放入请求头(例:访问人人网)

# 爬虫使用cookie
from urllib import request

if __name__ == '__main__':
    url = "http://www.renren.com/970362268"

    headers = {
        "cookie":"_r01_=1; ick=1a32e31e-bdfa-408b-8b87-68ac0c4ff4c7; anonymid=ju9fbgww-soghnp; depovince=GW; JSESSIONID=abcb7WJ_ynJeK_VXV2aOw; ick_login=c85d8114-439e-4d82-8e5f-10646cd37430; t=62d2b8164ae2b729d12263c9f4c482e68; societyguester=62d2b8164ae2b729d12263c9f4c482e68; id=970362268; xnsid=ff14ddfa; ver=7.0; loginfrom=null; jebe_key=16d9bc6a-222a-40ce-af09-9a18a0663e8c%7C57573f7
Python 爬虫使用 cookie 登录,一般需要以下步骤: 1. 发送登录请求,获取登录成功后的 cookie。 2. 将 cookie 保存下来,后续请求时带上 cookie。 下面是一个示例代码,假设登录成功后返回的 cookie 存储在变量 `cookie_str` 中: ```python import requests # 登录请求的 URL 和参数 login_url = 'http://example.com/login' login_data = {'username': 'your_username', 'password': 'your_password'} # 发送登录请求 session = requests.Session() response = session.post(login_url, data=login_data) # 获取 cookie,转换为字典格式 cookies = requests.utils.dict_from_cookiejar(session.cookies) # 将 cookie 转换为字符串格式,用于保存文件或数据库中 cookie_str = '; '.join([f'{key}={value}' for key, value in cookies.items()]) # 将 cookie 保存文件中 with open('cookie.txt', 'w') as f: f.write(cookie_str) # 后续请求时带上 cookie headers = {'Cookie': cookie_str} response = requests.get('http://example.com/some_page', headers=headers) ``` 在后续的请求中,需要将 cookie 以字符串格式加入到请求头部,示例代码中使用了 `headers` 参数来设置请求头部。如果需要从文件读取保存cookie,可以使用以下代码: ```python # 从文件读取 cookie with open('cookie.txt', 'r') as f: cookie_str = f.read().strip() # 将 cookie 以字典格式加入到 session session = requests.Session() cookies = requests.utils.cookiejar_from_dict({cookie.split('=')[0]: cookie.split('=')[1] for cookie in cookie_str.split('; ')}) session.cookies.update(cookies) # 后续请求时带上 cookie headers = {'Cookie': cookie_str} response = session.get('http://example.com/some_page', headers=headers) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值