『回』字有四种写法。
——鲁迅
复制请求头可以说是写爬虫代码的一个日常操作了,虽然不是所有网站都会检校请求头中的字段,但是如果遇到爬虫无法正常返回网页内容时,我们的第一反应依然是,加个headers试试——从最常见的UA,Host,到防盗链的Referfer,有时要添加cookie,等等。
如果我们能够明确地知道,加上哪一个,或者哪两个,甚至哪几个字段就能正确请求,那便也算了,偏偏有时没办法确定问题出在哪里,最简单粗暴的做法还是全写上吧。
当我们通过任何方式抓到一个请求的时候,总是能看到请求头的。但是用起来却不太理想——在Python中,我们往往需要将headers写成字典,这件事的画风是这样:
一团乱麻,不是吗
那么接下来怎么做呢…?今天给大家总结总结几种做法吧。
首先是朋友之前一篇推文中的两个做法
法一,不够优雅:
这种做法显然是最原始手工的做法了…
当然了…程序员遇到重复性的工作就总想造轮子…于是这篇推文的作者给大家提供了一个轮子,支持pip安装…(pip install copyheaders)
用轮子的法二:
那么我平时怎么做呢?以下再介绍三种方法。
法三:借助IDE的正则替换(PyCharm为例)
PyCharm中替换的快捷键是Ctrl+R,选中Regex正则模式
手撸正则,还是有点麻烦
好吧其实也就是两行正则。
源匹配为 (.*): (.*)$
替换匹配为 "$1": "$2",
(……写完检查时才发现好像复制了个Response header,反正一个意思)
使用频率不高的话,这种办法还是不错的,适用于熟悉正则熟悉IDE工具的同学。
法四:Chrome插件Postman
Postman是很强大的调试工具,但是目前Google已经放弃了Chrome App,目前在商店里只能直接搜索到插件。
之后就是使用了。
单从我们今天的目的——复制headers来看,操作如下:
开启Postman Interceptor,访问的任意请求都会被Postman截获。
在Postman点击请求-Code-选择Python-选择相应方式即可。
可以看到Postman支持非常多种语言的导出
可以看到Postman的确是个非常强大的工具,甚至可以直接帮我们生成requests代码了,而不仅仅是把headers转化为字典…
但是呢,我个人感觉使用Postman来干这件事有种杀鸡焉用牛刀的感觉。这款工具太重了…大家需要衡量学习成本,只做爬虫而不做Web开发的话估计用的会少一些。另一方面就是可能依然有人有人没办法访问Google…
领取专属 10元无门槛券
私享最新 技术干货