Python爬虫一些操作headers与cookies的便捷工具
本篇文章主要是爬虫中常用的便捷处理方法整理,转载请注明出处
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-08-14 13:07:06 # @Author : Sheldon (thisisscret@qq.com) # @blogs : 谢耳朵的派森笔记 # @Link : https://www.cnblogs.com/shld/
- 请求头headers转换为字典及优雅的字符串
hd_str_fmt方法完全可以用hd_str2dct结合pprint代替,不过其用了sub模板替换的方法,有借鉴意义就保留下来
import re def hd_str_fmt(s:str): '''把抓包工具的字符串请求头换成字典格式的字符串 param s: 需要转换的请求头字符串 return 格式化的字典字符串 ''' pattern = re.compile(r'^([^^\s]+?)(:)(?:\u0020+|)(\B$|\S[^$]*?$)',flags=re.M) return '{'+pattern.sub(r"'\1'\2 '\3',", s).strip()+'\n}' def hd_str2dct(s:str): '''把抓包工具的字符串请求头换成字典 param s: 需要转换的请求头字符串 return 请求头字典 ''' pattern = re.compile(r'^([^^\s]+?):(?:\u0020+|)(\B$|\S[^$]*?$)',flags=re.M) return dict(pattern.findall(s))
- cookies增加带有domain等参数的cookie
import requests
'''生成可定制其他参数的cookie
可以用response.cookies的set_cookie或update方法装载'''
cookie = requests.cookies.create_cookie(name, value, **kwargs)
- cookies与字典相互转换
import requests from functools import reduce from http.cookiejar import Cookie as Ck def cookies2dct(cookies): """RequestsCookieJar转换成dict""" cookie_list = [] for cookie in iter(cookies): kw = cookie.__dict__ if '_rest' in kw: kw['rest'] = kw.pop('_rest') cookie_list.append(kw) return {'Cookies': cookie_list} def dct2cookies(dct): """将上述函数生成的dict转换成RequestsCookieJar""" cookies = requests.cookies.RequestsCookieJar() reduce(cookies.set,map(lambda kw: Ck(**kw),dct['Cookies'])) return cookies