zoukankan      html  css  js  c++  java
  • 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()+'
    }'
    
    
    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
  • 相关阅读:
    C# IP地址与数字之间的互转
    C# 获取本机的所有ip地址,并过滤内网ip
    C# POST数据base64到接口会出错的问题
    C# 使用 Task 替换 ThreadPool ,异步监测所有线程(任务)是否全部执行完毕
    C# 线程池执行操作例子
    输入及词法分析详解
    用java实现编译器-算术表达式及其语法解析器的实现
    用java实现一个简易编译器-语法解析
    用java实现一个简易编译器1-词法解析入门
    模板方法模式
  • 原文地址:https://www.cnblogs.com/shld/p/9472287.html
Copyright © 2011-2022 走看看