本篇文章主要是爬蟲中常用的便捷處理方法整理,轉載請注明出處
#!/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