前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写爬虫如何让Headers一键格式化

写爬虫如何让Headers一键格式化

作者头像
Python进击者
发布2022-08-31 11:58:20
7120
发布2022-08-31 11:58:20
举报
文章被收录于专栏:JAVAandPython君

大家好,我是kuls。

很久没给大家写文章了,6月份开始一切恢复正常,会继续写更多的文章给大家。

在以前写爬虫的时候,有个事情很烦人,那就是处理一大堆的Headers。

可能有部分小伙伴还不知道Headers是啥,Headers就是请求头的意思,当我们写爬虫去请求某些网页时,需要携带请求头,不然可能无法访问。

按照正常操作,我们如何获取请求头呢?

我们抓取爬虫时,打开开发者工具或者抓包工具就能够看到http请求的请求头信息。

每次复制走后,需要将其转化成json的格式,如果一个一个去修改这就非常的麻烦了。(我以前就是手工改的,麻了)

那么我们能不能写个小工具来辅助我们一键转化?

代码语言:javascript
复制
:authority: www.bilibili.com
:method: GET
:path: /?spm_id_from=444.41.b_696e7465726e6174696f6e616c486561646572.1
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

其实非常的简单,我们复制浏览器或者抓包工具的请求头时大致是上面那样的。大致的思路就是将每一行的首部和尾部加上单引号,然后同时在尾部要加上逗号。

我们写代码来测试下

代码语言:javascript
复制
ret = ""
# 遍历每一个字符
for c in headers:
# 如果是换行,就换成 ',\n'
  if c == '\n': 
    c = "',\n'"
  ret += c
# 将冒号变成  ':'
ret = re.sub(": ", "': '", ret) 

我们打印下ret看看结果

代码语言:javascript
复制
',
'accept-ranges': 'none',
'content-encoding': 'gzip',
'content-type': 'text/html; charset=utf-8',
'date': 'Tue, 31 May 2022 12:47:27 GMT',
'eagleid': 'd35bea2e16540012470177954e',
'etag': '"2b4a0-vmPJ+VGfNIiJYfpxd5oRkxAcDRw"',
'server': 'Tengine',
'server-timing': 'inner; dur=232, pp;dur=15, total;dur=224;desc="Nuxt Server Time"',
'timing-allow-origin': '*',
'vary': 'Accept-Encoding',
'via': 'cache26.cn4050[296,0]',
'x-powered-by': 'Express',
'x-tt-logid': '202205312047270102320161401A0336D3',
'x-tt-timestamp': '1654001247.265',
'x-tt-trace-host': '01b0ac3503025d9eeafc261cd112d3fdc6e159094a69db7fbd2554558314a40f27883b43867a0ddae1fa00946c0c6eef2443a58a1e427dfe2fdca0f5f267b023e095b72b4bb1d579868d5af536702455f85f40c03ee9bbd3b103948b987d7b54a9',
'x-tt-trace-tag': 'id=3;cdn-cache=miss',
'

可以看到得到了我们想要的,但是有一点点小细节没有处理,就是整个字符串的头部和尾部都有多余的符号。

我们直接通过 ret[3: -3] 就可以处理了。

通过 print("{\n"+ret[3: -3] + "\n}") 这样打印出来就是我们需要的效果。

知道了核心代码怎么做了,我们其实可以写个小界面。GUI或者web都可以,如果你想要看如何写GUI可以给我点个赞,点赞超20,下篇继续完善!

好了,以上就是本期内容,咱们下期见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档