爬虫能够简单分为三步骤:请求数据、解析数据和存储数据 。主要的一些工具以下:javascript
requestjava
一个阻塞式http请求库。git
Seleniumgithub
Selenium是一个自动化测试工具,能够驱动浏览器执行特定的动做,如点击,下拉等操做。对于一些javascript渲染的页面,这种抓取方式很是有效,作到可见便可爬。web
ChromeDriver、GeckoDriverredis
只有安装了ChromeDriver和GeckoDriver以后,Selenium才能驱动Chrome或者Firefox浏览器来作相应的网页抓取。固然,须要关闭浏览器的更新功能,避免版本不一致。数据库
PhantomJS编程
PhantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,原生支持多种Web标准:Dom操做、CSS选择器、JSON、Canvas和SVG。Selenium支持PhantomJS,在运行的时候不会再弹出一个浏览器。windows
aiohttp后端
相比于requests,aiohttp是一个提供异步Web服务的库。
lxml
lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,并且解析效率高。
Beautiful Soup
Beautiful Soup能够方便的从网页中提取数据,拥有强大的API和多样的解析方式,在解析时依赖解析器,如:lxml。
pyquery
pyquery提供了和jQuery相似的语法来解析HTML文档,支持CSS选择器,使用方便。
tesserocr
tesserocr是Python的一个OCR识别库,是对tesseract作的一层Python API封装,所以,在安装tesserocr以前,须要先安装tesseract。pip3 install tesserocr pillow命令因为网络安装不了时,能够下载相应的.whl文件,进行pip3 install XXX.whl命令安装tesserocr,再pip3 install pillow。
若是想将数据存储到MySQL、MongoDB或Redis中,则须要分别借助PyMySQL、PyMongo、redis-py或者RedisDump来操做。
Web相关
Flask
Flask是一个轻量级的Web服务程序,简单、易用、灵活,能够用来作一些API服务。咱们可使用Flask+Redis维护动态代理池和Cookies池。
Tornado
Tornado是一个支持异步的Web框架,经过使用非阻塞I/O流,能够支撑成千上万的开放链接,效率很是高。
Charles
Charles是一个网络抓包工具,相比Fiddler,功能更强大,并且跨平台支持得更好
mitmproxy
mitmproxy是一个支持HTTP和HTTPS的抓包程序,相似Fiddler、Charles的功能,只不过经过控制台的形式操做。另外,mitmproxy还有两个关联组件,一个是mitmdump,它是mitproxy的命令行接口,利用它能够对接Python脚本,实现监听后的处理;另外一个是mitmweb,它是一个Web程序,经过它以清楚地观察到mitmproxy捕获的请求。
Appium
Appium是移动端的自动化测试工具,相似于Selenium,利用它能够驱动Android、IOS等设备完成自动化测试,好比模拟点击、滑动、输入等操做。
pyspider
pyspider是国人binux编写的强大网络爬虫框架,带有强大的WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,另外还支持javascript渲染页面的爬取。
Scrapy
Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少须要依赖有Twisted14.0、lxml3.4和pyOpenSSL 0.14。在不一样的平台环境下,所依赖的库也各不相同,因此在安装以前,最好确保把一些基本库安装好。
Scrapy-Splash
Scrapy-Splash是一个Scrapy中支持javascript渲染的工具。
Scrapy-Redis
Scrapy-Redis是Scrapy的分布式扩展模块,经过它能够方便地实现Scrapy分布式爬虫的搭建。
Docker、Scrapyd、Scrapyd-Client、Scrapyd API、Scrapyrt、Gerapy等。