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

 

posted @ 2018-08-14 07:37  谢耳朵的派森笔记  阅读(1906)  评论(0编辑  收藏  举报