python爬虫-将headers+cookies构造标准格式dict

将headers构造为字典格式

accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
referer: https://search.jd.com/search?keyword=%E8%B1%86%E6%B5%86%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=dou%20jianf%20ji&stock=1&ev=exbrand_%E4%B9%9D%E9%98%B3%EF%BC%88Joyoung%EF%BC%89%5E&uc=0
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

通过chrom浏览器获取到headers,笔者之前总是傻瓜式放在程序中,一个一个双引号加,比较繁琐,于是开始写了这个方法,
1. 方法思路如下:
在这里插入图片描述

2. 步骤如下:

  1. 因为三引号支持多行文,用三引号包裹粘贴的headers信息
  2. 以换行符分割a.split("\n")[1:-1]
    1:-1是为了去掉首行和结尾回车的影响
  3. 将每一个的字符串以 : (冒号分割),并且指定分割一次
i.split(":",1) for i in a.split("\n")[1:-1]

这时返回的是n(行数)个列表,每个列表有两个元素,第一个是冒号之前的元素,第二个是冒号之后的元素

  1. 将每一个列表里的第一个值作为字典里面的key,第二个值作为字典里的value
test = {i.split(":",1)[0]:i.split(":",1)[1].strip() for i in a.split("\n")[1:-1]}

注意在这里要加上strip参数,因为中间会空出一个空格,导致将此字典传入headers而请求不出数据。

将cookies构造为字典格式

通过上面的headers构造为字典的思路,我们可以得出cookie构造字典类似的思路:
将cookies按冒号分割,然后获取其=号的字典值

cookies = dict([l.split("=",1) for l in cookie.split(": ")])

如有错误,欢迎指正

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
发出的红包

打赏作者

精神抖擞王大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值