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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM