鉴于爬虫初学者们,往往也是编程的初学者,我在这里介绍一套最常用的技术栈,不求多,只求精。
毕竟我们的目标是采集到数据,只要能够成功实现目标的工具就是好工具。
- 爬虫框架scrapy:该框架是scrapinghub公司开发并开源的,经历过时间的检验,好用,性能佳。
- http请求库requests:requests官方是这样介绍这个库的:“Requests 是个为Python而写的优雅又简单的HTTP库”我们可以在爬虫代码开发过程中使用这个库进行调试,甚至一些简单的爬虫完全可以只用requests来实现。
- http请求curl:说起调试爬虫,就一定得提到curl,这个工具非常好用。在chrome中可以一键生成某个请求的curl命令,然后修改参数以调试可验证接口可接受参数的范围。
一个爬虫所需要的工具就这么多了。除了上面介绍的这些,你可能还需要一台电脑和一根网线。
在本教程中,不会过多涉及存储。你完全可以将采集回来的数据以任何你认为方便的方式存储。如果你不太会使用数据库的话,直接用文件存储也可以。
如果你还想了解更多的话,可以看看下面这些工具。
- urllib3:其实还有urllib和urllib2,是比较底层的原生http请求库。如果你没有直接使用过它们,那说明你不需要学习它们。
- grab:另一个爬虫框架,并非python爬虫业界主流。有兴趣可以读读源码。
- asyncio:py3中的一个异步协程库。
- aiohttp:基于asyncio实现的一个异步协程http请求库。
- pyspider:爬虫专家binux业余开发的一套爬虫框架,带UI展示。但是维护不频繁,也不如scrapy好用。大家有空可以读读源码学习一下,不推荐工业使用。
模拟浏览器:
- 以前常用技术栈有selenium+phatomjs,其中selenium是个自动化测试框架,phatomjs是个无界面浏览器,但phatomjs已经停止开发了。
- 目前更为常用的方案应该是selenium+chrome headless,或是pyppeteer跟splash。
- chrome headless就是chrome浏览器的无界面版本,我们将在后续文章中着重介绍。
- pyppeteer则是基于puppeteer进行封装的另一个chrome headless自动化测试框架。
- splash则是scrapinghub公司研发的,比较适合只对js进行渲染,而不进行点击或任何其他步骤的操作。
抓包分析工具:
- 最常用的还是chrome和firefox的开发者工具,我们的教程中几乎都是chrome开发者工具作为示例。
- app抓包可以使用fiddler和charless,如果搞不定就得上更加高端的wireshark。甚至是mitmproxy或anyproxy进行抓包。
- 后续在我们讲解到app抓取时,我们会比较详细的介绍app如何反编译,找到加密算法。但其实app抓取更常用的手段是Appium模拟,这类似于PC端使用浏览器进行渲染。
建议爬虫初学者不要一次学习太多工具,只要先对每个工具的作用做一个初步了解,后续伴随着项目的进行,遇到合适的场景下选择合适的工具即可。