前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【爬虫军火库】如何优雅地复制请求头

【爬虫军火库】如何优雅地复制请求头

作者头像
不二小段
发布2018-04-16 10:19:36
9790
发布2018-04-16 10:19:36
举报
文章被收录于专栏:不二小段不二小段

『回』字有四种写法。

——鲁迅

复制请求头可以说是写爬虫代码的一个日常操作了,虽然不是所有网站都会检校请求头中的字段,但是如果遇到爬虫无法正常返回网页内容时,我们的第一反应依然是,加个headers试试——从最常见的UA,Host,到防盗链的Referfer,有时要添加cookie,等等。

如果我们能够明确地知道,加上哪一个,或者哪两个,甚至哪几个字段就能正确请求,那便也算了,偏偏有时没办法确定问题出在哪里,最简单粗暴的做法还是全写上吧。

当我们通过任何方式抓到一个请求的时候,总是能看到请求头的。但是用起来却不太理想——在Python中,我们往往需要将headers写成字典,这件事的画风是这样:

一团乱麻,不是吗

那么接下来怎么做呢…?今天给大家总结总结几种做法吧。

首先是朋友之前一篇推文中的两个做法

法一,不够优雅:

盗图,来自爬虫小工具-copyheader

这种做法显然是最原始手工的做法了…

当然了…程序员遇到重复性的工作就总想造轮子…于是这篇推文的作者给大家提供了一个轮子,支持pip安装…(pip install copyheaders)

用轮子的法二:

依然是盗图,来自爬虫小工具-copyheader

当然了,客观地讲,这种轮子也就自己写代码时用用,如果代码要分享出去,无关的依赖还是少一些好…大家感兴趣详见 爬虫小工具-copyheader

那么我平时怎么做呢?以下再介绍三种方法。

法三:借助IDE的正则替换(PyCharm为例)

PyCharm中替换的快捷键是Ctrl+R,选中Regex正则模式

手撸正则,还是有点麻烦

好吧其实也就是两行正则。

源匹配为 (.*): (.*)$

替换匹配为 "$1": "$2",

(……写完检查时才发现好像复制了个Response header,反正一个意思)

使用频率不高的话,这种办法还是不错的,适用于熟悉正则熟悉IDE工具的同学。

法四:Chrome插件Postman

Postman是很强大的调试工具,但是目前Google已经放弃了Chrome App,目前在商店里只能直接搜索到插件。

你可以安装插件以后点击链接获取Postman App:

之后就是使用了。

单从我们今天的目的——复制headers来看,操作如下:

开启Postman Interceptor,访问的任意请求都会被Postman截获。

在Postman点击请求-Code-选择Python-选择相应方式即可。

可以看到Postman支持非常多种语言的导出

可以看到Postman的确是个非常强大的工具,甚至可以直接帮我们生成requests代码了,而不仅仅是把headers转化为字典…

但是呢,我个人感觉使用Postman来干这件事有种杀鸡焉用牛刀的感觉。这款工具太重了…大家需要衡量学习成本,只做爬虫而不做Web开发的话估计用的会少一些。另一方面就是可能依然有人有人没办法访问Google…

所以,需要Postman的同学,可以在公众号回复postman获取下载链接~

法五:使用curlconverter

这是我自己发现的一个办法,不需要软件不需要插件,是一个网页服务。

https://curl.trillworks.com/

使用这个方法前我们需要知道什么是curl。

curl是Linux命令行下的文件传输工具,可以直接访问URL,支持多种协议和参数设置甚至cookie设置。简单来说,就是可以模拟一个请求。

Chorme浏览器的开发工具支持直接copy as curl,所以我们只需要这么做:

在开发工具中选中请求copy as curl,然后粘贴到网站表单中,获得Python代码。

这个网站只支持Python、NodeJS和PHP

说实话…这种轻量级的方法是我最喜欢的一种…

好了,至此我们今天一共介绍了五种办法。当然办法绝对不止这五种。

虽然只是一个很小的功能,依然可以通过很多办法来提高效率和生产力。虽然探索这些方法本身的意义犹如学习回字的四种写法,但是其实每种方法背后都代表着一种工具,不管是造轮子,正则,Postman还是curlconverter功能都远不止用来构造一下字典。

你现在用的是什么办法?看完这篇文章你决定选择哪种办法呢?留言告诉我吧~

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

本文分享自 不二小段 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档