爬虫常用的工具

前面写过一篇《如何成为一名爬虫工程师》,这篇博文介绍一些写爬虫的神器。比如查看网络请求,模拟网络请求等。本文不会涉及到编程工具例如vim,tmux等(虽然这些工具我也极力推荐,应该人手一份)。

curl

cURL

curl是在命令行用url语法传输文本的工具。用curl可以模拟任何从浏览器发出的请求,并且是以纯文本的形式,所以任何header、cookies都一目了然。有时候你碰到“为什么在浏览器请求能成功,在代码中就不行”的问题时,用curl验证一下是最靠谱的办法。

curl的用法非常简单,curl + "url"就可以向一个url发送请求,显示服务器响应。-H "header"可以给请求加上headers。-i参数可以打印出响应头,大写的-I只打印响应头。-L参数开启301,302跳转等。学习会这些基本就可以上手了,希望详细的了解curl可以阅读《everything curl》这本书(免费书籍:PDF在线阅读

一个请求一般带有很多headers,一个一个输入太费劲了,型号,我们可以使用chrome的copy as curl功能。

此命令会将一个网络请求转换成curl放到剪切板,直接在命令行粘贴就可以了。

对了,写爬虫chrome是最大的神器,推荐阅读酷壳的《CHROME开发者工具的小技巧》

但是如此长的一个命令在命令行上修改起来特别麻烦(要让光标跳来跳去的),所以再推荐一个GUI的模拟发送请求的工具postman

postman

postman可以让你像在chrome中修改css那样,修改请求的header,cookies等任何东西。除了全平台的app之外,还有chrome app可以用。可以将请求保存下来,下次继续工作的时候可以使用。当然postman也支持从curl粘贴导入,这样我们可以把任意chrome的请求导入到postman。不过地方比较坑,我第一次花了很长时间才找到,在 import > Paste Raw Text (竟然不是Paste cURL)。这里提醒一下,我有一次用postman的请求怎么也不对,但是用curl直接在终端就对了,这说明postman有一些bug,不能完全模拟请求。同事推荐了paw,还没用过,下次用过再谈(好像是mac专用的)。

curl to requests

这是一个在线的工具,可以将curl命令转换成python的requests库代码写成的命令(还支持node和PHP)。这样就省去了很多手工排格式的麻烦操作(其实可以做成vim插件的讲)。

python -m “json.tool”

这是python自带的json库,不用任何安装,直接用echo str | python -m 'json.tool'就可以在终端格式化json(之前我一直傻傻的粘贴到vscode里面……)

可以配合curl使用,直接让返回的json可读。

如果你使用Vim,用Vim打开一个file.json文件,可以直接在buffer中输入:%!python -m 'json.too'来将当前buffer的json内容格式化。非常有用。

EditThisCookie

顾名思义,这是用来修改cookies的。如果你要模拟登陆,可以尝试一个一个删掉cookie看哪一个是起作用的。

Proxifier

写爬虫被封ip是很正常的事情。被封了就得挂代理去访问目标网站。浏览器可以用switch Omega,终端可以用proxychains。但还是有些不方便。p4又有一些bug,并不是所有终端程序都可以走代理的。

这个时候就可以使用proxifier自定义流量规则,甚至可以全局转发到代理,一个都跑不了,非常稳!

暂时就想起来这个多,以后有别的还会在这篇博客更新。



Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注