python爬虫工具集合
主要针对python3
常用库
获取目标
- chrome/firefox
- fiddler
- project
- download-unofficial
- download-official
- articles
- Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,使用Fiddler无论对开发还是测试来说,都有很大的帮助。Fiddler4基于4.0的.NET。
- wireshark
开始下载
- urllib
- Urllib是python提供的一个用于操作url的模块。
- 在python2中,有urllib库和urllib2库。在python3中,urllib2合并到urllib库中,我们爬取网页的时候,经常用到这个库。
- urllib库在python2与python3中的区别
- urllib3
- github
- urllib 3是一个强大的、健全友好的Python HTTP客户端。大多数Python系统已经使用了urllib 3,您也应该使用urllib 3,urllib 3带来了Python标准库所缺少的许多关键特性。
- requests
- requests-html
验证码识别
- PIL
- opencv
- pybrain
- 打码平台
文本解析
- beautiful soup
- doc
- Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。
- lxml
- doc
- lxml库结合libxml2快速强大的特性,使用xpath语法来进行文件格式解析,与Beautiful相比,效率更高。
- pyquery
- re
- python内置
- 指南
- 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
提速处理
- 并发编程
- Queue
- python内置
- Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递
数据存储
- 数据库
- pymysql
- redis
- sqlalchemy(ORM)
数据处理
- numpy
- pandas
- matplotlib
- wordcloud
自动化测试
- selenium
- htmlunit
- sourceforge
- HtmlUnit是一个无界面浏览器Java程序。它为HTML文档建模,提供了调用页面、填写表单、单击链接等操作的API。就跟你在浏览器里做的操作一样。HtmlUnit不错的JavaScript支持(不断改进),甚至可以使用相当复杂的AJAX库,根据配置的不同模拟Chrome、Firefox或Internet Explorer等浏览器。HtmlUnit通常用于测试或从web站点检索信息。
- httpClient的局限性:对于使用java实现的网页爬虫程序,我们一般可以使用apache的HttpClient组件进行HTML页面信息的获取,HttpClient实现的http请求返回的响应一般是纯文本的document页面,即最原始的html页面。对于一个静态的html页面来说,使用httpClient足够将我们所需要的信息爬取出来了。但是对于现在越来越多的动态网页来说,更多的数据是通过异步JS代码获取并渲染到的,最开始的html页面是不包含这部分数据的。(By johnson_moon)
- headless:Headless 提供一种无 GUI 的纯浏览器环境,对于 Web 应用和网页的自动化测试非常有用。
- Chrome-headless 模式
- chromedriver download1
- chromedriver download2
- chromedriver 与Chrome版本的对应关系
- 官方介绍
- Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致。(By 虫师)
- Firefox-headless 模式
- Chrome-headless 模式
- phantomjs
- 【NOTE】该项目目前处于停滞状态,已经不被新版 selenium 支持了
- github
- PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器 做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等, 同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如前端无界面自动化测试(需要结合 Jasmin)、网络监测、网页截屏等。
高级框架
- pyspider
- github
- doc
- pyspider中文网
- 一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
- scrapy
开发环境
- spyder
- ipython
- github
- ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数。它提供了一个强大的python交互式shell和供Jupyter notebooks使用的一个Jupyter内核(IPython notebook)
- jupter notebook
- github
- doc
- jupyter-themes
- Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。
关于爬虫
- 本系列教程介绍使用Python及相关为实现网络爬虫。
- 如何成为一名爬虫工程师
- 爬虫常用工具
- curl
- postman、paw
- curl to requests
- python -m “json.tool”
- Proxifier
一些建议
- 延时
- 异常处理