目录
前言
请求库
requests模块
selenium模块
解析库
lxml模块
Beautiful Soup模块
pyquery模块
tesserocr模块
数据存储
MySQL
MongoDB
Redis
Web模块
flask模块
django模块
爬虫框架
scrapy模块
scrapy-splash模块
scrapy-redis模块
部署支撑工具
Docker
Scrapyd
Scrapyd-Client
Scrapyd API
Scrapyrt
爬虫可以简单分为几步:抓取页面、分析页面和存储数据
pip3 install requests selenium beautifulsoup4 pyquery pymysql pymongo redis flask django jupyter
抓取页面过程就是模拟浏览器向服务器发送请求
requests库是一个阻塞式HTTP请求库,当我们发送一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进入下一步处理
安装:pip3 install requests
selenium是一个自动化测试的工具,利用它我们可以驱动浏览器执行特定动作,如点击、下拉等,对于一些javascript渲染的页面来说,这种抓取方式非常有效
安装:pip3 install selenium
chrome浏览器的的驱动程序:ChomeDriver
下载地址:https://chromedriver.storage.googleapis.com/index.html
根据chrome浏览器版本寻找对应的chromedriver下载,下载完成后,将chromedriver的可执行文件配置到环境变量下,windows下建议直接放到python的script目录下,linux下,将chromedriver放到usr/bin目录下
firefox浏览器的驱动程序:GeckoDriver
下载地址:https://github.com/mozilla/geckodriver/releases
同chromedriver使用方法相同,可以配置环境变量,也可以直接放入python/script目录下
无界面浏览器:PhantomJS
使用chrome和firefox进行网页爬取有个不便之处,因为程序运行过程中需要一直开着浏览器,在爬取网页的过程中浏览器可能一直动来动去,不讲究,所以可以安装一个无界面浏览器phantomjs,此时抓取过程会在后台运行,不会再有窗口出现。
phantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作、CSS选择器、JSON、Canvas以及SVG
Selenium支持phantomJS,这样在运行的时候不会再弹出一个浏览器了,而且phantomJSde运行效率也很高
安装:观网下载,将可执行文件的路径配置在环境变量里(E:\BaiduNetdiskDownload\phantomjs-2.1.1-windows\bin),也可以将整个phontomJS文件夹放入已配置环境变量的目录里,如python/script(建议)
lxml支持HTML和XML的解析,支持Xpath解析方式,而且解析效率高
安装:pip3 install lxml
Beautiful Soup是一个HTML和XML的解析库,它拥有强大的API和多样的解析方式,Beautiful Soup解析器是基于lxml的,所以安装前需要已安装lxml
安装:pip3 install beautifulsoup4
pyquery同样是一个强大的网页解析工具,它提供了和jquery类似的语法来解析HTML文档,支持CSS选择器,使用方便
安装:pip3 install pyquery
tesserocr是一个OCR识别库,它是对tesseract做的一层python api封装,它的核心是tesseract,所以安装tesserocr之前,需要安装tesseract
在爬虫过程中,会遇到各种各样的验证码,而且大多数验证码还是图形验证码,这就需要使用ORC来识别,ORC即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过错
安装:
从https://digi.bib.uni-mannheim.de/tesseract/下载安装[email protected];
pip3 install tesserocr pillow
如果pip安装报错,则选择使用wheel文件安装:https://github.com/simonflueckiger/tesserocr-windows_build/releases(根据python版本和win位数选择版本,不然会报错,python3已直接支持wheel文件安装,报错一般不是修改文件名的问题,是版本不对)
mysql进阶之路:https://mp.csdn.net/postedit/82466144
mongodb进阶之路:https://mp.csdn.net/postedit/82491615
redis进阶之路:https://mp.csdn.net/postedit/82497629
Flask是一个轻量级的Web服务程序,主要用来做一些API服务
安装:pip3 install flask
Django进阶之路:https://mp.csdn.net/postedit/82894028
Scrapy是一个十分强大的的爬虫框架,依赖的库比较多,所以安装之前确保依赖库已安装完成
基本依赖库:1、lxml;2、pyOpenSSL;3、Twisted;4、PyWin32
scrapy-splash是一个scrapy中支持JavaScripy渲染的工具
Scrapy-Splash的安装分为两个部分:
splash服务:安装后会启动一个splash服务,通过它的接口来实现javascript页面的加载,通过docker安装:docker run -p 8050:8050 scrapinghub/splash
Scrapy-Splash的python库:安装后可在Scrapy模块中使用splash服务,pip3 install scrapy-splash
Scrapy-redis是Scrapy的分布式扩展模块,有了它我们可以实现Scrapy分布式爬虫搭建
安装:pip3 install scrapy-redis
貌似只支持x64位的主机。。。
Scrapyd是一个用于部署和运行Scrapy项目的工具,通过它可以将写好的Scrapy项目上传到云主机并通过API来控制它的运行
既然是项目部署,基本上都使用Linux主机
安装:pip3 install scrapyd
将Scrapy代码部署到远程Scrapyd的时候,第一步就是要将代码打包为EGG文件,其次需要将EGG文件上传到远程主机,这个过程可以通过Scrapyd-Client来实现这些功能
安装:pip3 install scrapyd-client
安装好Scrapyd之后,我们可以直接请求它提供的API来获取当前主机的Scrapy任务运行状况。比如,
crul http://localhost:6800/listprojects.json
返回的结果是JSON字符串
{"status":"ok","projects":["otherproject"]}
安装:pip3 install python-scrapyd-api
Scrapyrt为Scrapy提供一个调度的HTTP接口,通过它就不需要再执行scrapy命令而是通过HTTP接口来调度Scrapy任务了,Scrapyrt比Scrapyd更轻量,如果不需要分布式任务的话,可以简单使用Scrapyrt实现远程Scrapy任务的调度
安装:pip3 install scrapyrt