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
  • 相关阅读:
    VS.NET2005中的源代码管理
    IE6升级后需要激活ActiveX控件的解决办法
    SQL Server的数据库开发工具
    今天更新了ActiveSync4.2
    永远等你先挂电话
    这回软设考试通过了!
    在Windows2003中FSO组件不能使用的问题
    七天的假期好长哟!
    发现博客园的一个Bug 存为草稿后就找不到了
    MySQL服务不能启动的解决方法
  • 原文地址:https://www.cnblogs.com/shld/p/9472287.html
Copyright © 2011-2022 走看看