python爬虫之快速构造标准格式headers

0x01 源码

a = '''
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:uuid_tt_dd=1480340313111808904_20170920; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1505918405; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1505918410; dc_tos=owl22x; dc_session_id=1505918405193_0.8442837642502332; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_district_code=000000; __message_in_school=0
Host:www.csdn.net
If-Modified-Since:Wed, 20 Sep 2017 14:20:09 GMT
If-None-Match:W/"59c27919-18436"
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36
'''

print({i.split(":",1)[0]:i.split(":")[1] for i in a.split("\n")[1:-1]})

0x02 故事背景

我们在制作爬虫、编写自动访问、用户名密码爆破等一系列与网站自动化交互的脚本时,往往离不开header头的制作,从浏览器上一个一个粘贴,然后制作成字典形式,忒费劲,至少俺是这么想的

自从构造了半自动化生成生成header头后,腰也不疼了,腿也不酸了,一口气爬到七楼都不用喘气了,贼开心

废话不多说,上图

这里写图片描述

0x03 代码解析

在此之前,俺再赘述一下,找到要操作的网站

F12(笔者用的是谷歌浏览器)- network(如果没有东西的话,刷新一下网页就好了)- 选择第一个链接 - headers-Request Headers-复制自己所需要的就好了

上图
这里写图片描述

  1. 用三引号包裹粘贴的headers信息,因为三引号支持多行文本
  2. 以换行符分割

    a.split("\n")[1:-1]

    此时返回一个列表,列表元素是各行的字符串,后面的切片操作是因为,咱们在赋值a的时候在开头三引号后面加了回车,结尾的三引号前面加了回车,为了去除这两个回车

  3. 将每一个的字符串以 : (冒号分割),并且指定分割一次

    i.split(":",1) for i in a.split("\n")[1:-1]

    此时返回的是n(行数)个列表,每个列表有两个元素,第一个是冒号之前的元素,第二个是冒号之后的元素

    之所以没有re模块来进行多个分隔符进行分割的原因就是,冒号的分割只能进行一次,比如header头里面的

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0

    value的值里面存在了冒号,如果分割多次的话,便会产生bug

  4. 将每一个列表里的第一个值作为字典里面的key,第二个值作为字典里的value

    {i.split(":",1)[0]:i.split(":",1)[1] for i in a.split("\n")[1:-1]}
  5. gameover

0x04 临别感言

笔者特别喜欢用推导式来写东西,感觉特别有趣,因此在本程序中使用了字典推导式

最后欢迎各位大表哥再次光临 ^_^

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值