requests的安装
由于 requests 属于第三方库 ,也就是 python 默认不会自带这个库,所以需要我们手动安装。
pip install requests
selenium
Selenium 是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等 操作,对于一些 JavaScript 谊染的页面来说,这种抓取方式非常有效。
pip install selenium
ChromeDriver的安装
前面我们成功安装好了Selenium库,但是它是一个自动化测试工具,需要浏览器来配合使用,本节中我们就介绍一下 Chrome浏览器及ChromeDriver驱动的配置。
查看谷歌浏览器版本
下载对应的版本,https://chromedriver.storage.googleapis.com/index.html
考虑到谷歌浏览器经常会自动更新,我们可以关闭自动更新浏览器
下载完解压之后,移动到python的安装目录下
验证安装是否成功
GeckoDriver 的安装
GeckoDriver 是针对于Firefox浏览器。
下载地址:https://github.com/mozilla/geckodriver/releases/tag/v0.31.0
下完之后解压,和 ChromeDriver 一样放到python的Scripts目录下
验证安装是否成功
PhantomJS的安装
PhantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准: DOM操作、CSS选择器、JSON,Canvas以及SVG。
Selenium支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了。而且 PhantomJS的运行效率也很高,还支持各种参数配置,使用非常方便。下面我们就来了解一下 PhantomJS的安装过程。
下载地址:https://phantomjs.org/download.html
下载解压完之后,将bin所在的路径添加到环境变量中
验证是否配置成功
aiohttp 的安装
之前介绍的requests库是一个阻塞式 HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费时间。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。
aiohttp就是这样一个提供异步Web服务的库,从Python 3.5版本开始, Python中加入了asynclawait关键字,使得回调的写法更加直观和人性化。aiohttp 的异步操作借助于asynclawait 关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率。
我们会在后面的实例中用到这个库、比如维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大地提升效率。
pip install aiohttp
可能会出现的问题
假如使用pycharm编写代码的时候,发现写代码的时候没有提示或者出现下图所示的错误,并且自己在本机使用cmd运行相同命令的时候没有异常。
更改pycharm的相关配置,将python.exe更改成本机的python.exe。
抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、 pyquery等。此外,还提供了非常强大的解析方法,如XPath解析和CSS选择器解析等,利用它们,我们可以高效便捷地从网页中提取有效信息。
pip install lxml
pip install beautifulsoup4
注意,这里我们虽然安装的是 beautifulsoup4这个包,但是在引入的时候却是 bs4。这是因为这个包源代码本身的库文件夹名称就是 bs4,所以安装完成之后,这个库文件夹就被移入到本机 Python3的lib库里,所以识别到的库文件名就叫作bs4。
pip install pyquery
tesserocr 安装
在爬虫过程中,难免会遇到各种各样的验证码,而大多数验证码还是图形验证码,这时候我们可以直接用OCR来识别。
下载地址:https://digi.bib.uni-mannheim.de/tesseract
下载完之后一路next安装即可
pip install tesseroct pillow
假如上面的pip无法下载的话,就去https://github.com/simonflueckiger/tesserocr-windows_build/releases 下载python版本的tesserocr whl文件,然后使用whl进行安装
pip install tesserocr-2.5.2-cp39-cp39-win_amd64.whl
进行测试,需要先把tesserocr 下载安装后的tessdata文件移动到自己的python文件夹中
验证的图片是
import tesserocr
from PIL import Image
image=Image.open('image.png')
print(tesserocr.image_to_text(image))
执行结果,发现识别成功
Mysql数据库安装过程忽略。
Redis 数据库安装
windows下载:https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504
下载完之后直接next安装即可
pip install pymysql
pip install redis
RedisDump:
redis的数据导入导出工具。安装之前还需要安装Ruby,因为只有Ruby才能使用gem命令,Ruby下载:https://rubyinstaller.org/downloads,具体的安装把全部的选项勾上然后next、回车即可。
gem install redis-dump
Flask 的安装
Flask是一个轻量级的Web服务程序,它简单、易用、灵活,这里主要用来做一些API服务。
pip install flask
验证安装
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__=="__main__":
app.run()
后面,我们会利用Flask+Redis维护动态代理池和Cookies池。
pip install tornado
后面,我们会利用Tornado+Redis来搭建一个ADSL拨号代理池。
本书介绍的抓包工具有mitmproxy 和mitmdump。一些简单的接口可以通过mitmproxy 分析,找出规律,然后直接用程序模拟来抓取了。但是如果遇到更复杂的接口,就需要利用mitmdump对接Python来对抓取到的请求和响应进行实时处理和保存。另外,既然要做规模采集,就需要自动化 App 的操作而不是人工去采集,所以这里还需要一个工具叫作 Appium,它可以像Selenium一样对App进行自动化控制,如自动化模拟App 的点击、下拉等操作。
mitmproxy 的安装
mitmproxy是一个支持 HTTP和 HTTPS的抓包程序,类似 Fiddler、 Charles 的功能,只不过它通过控制台的形式操作。
此外,mitmproxy还有两个关联组件,一个是mitmdump,它是 mitmproxy的命令行接口,利用它可以对接Python脚本,实现监听后的处理;另一个是mitmweb,它是一个Web程序,通过它以清楚地观察到mitmproxy捕获的请求。
pip install mitmproxy
证书配置
cmd窗口运行mitmproxy
,在用户目录下的.mitmproxy找到CA证书,并且双击mitmproxy-ca.p12安装。
一直默认,直到出现选择证书存储的选择之后,选择下图所示的选项,然后一直选择是即可。
Appium 的安装
Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android 、 ios等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为: http://appium.iol/。
下载地址是:https://github.com/appium/appium-desktop/releases,下载后双击安装即可。
我们直接用requests、Selenium等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。
pyspider 的安装(自己在安装的时候,由于自己的python是3.9的版本,现在已经找不到pucurl 7.4.3.0.3版本的,所以安装失败了)
需要先下载后pycurl,否则就会出错,在https://www.lfd.uci.edu/~gohlke/pythonlibs/#netifaces
进行下载whl文件然后再进行安装
pip install pycurl-7.45.1-cp39-cp39-win_amd64.whl
pip install pyspider
Scrapy 的安装
Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、 lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。本节就来介绍 Scrapy在不同平台的安装方法。
pip install lxml
pip install pyOpenSSL
pip install Twisted
pip install pywin32
pip install Scrapy
Scrapy-Splash 的安装(我这里还没进行安装)
Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具,本节来介绍它的安装方式。
Scrapy-Splash的安装分为两部分。一个是Splash服务的安装,具体是通过Docker,安装之后,会启动一个Splash服务,我们可以通过它的接口来实现JavaScript页面的加载。另外一个是Scrapy-Splash的Python库的安装,安装之后即可在 Scrapy中使用Splash服务。
docker run -p 8050:8050 scrapinghub/splash
pip install scrapy-splash
Scrapy-Redis 的安装
Scrapy-Redis是Scrapy的分布式扩展模块,有了它,我们就可以方便地实现Scrapy分布式爬虫的搭建。本节中,我们将介绍Scrapy-Redis的安装方式。
pip install scrapy-redis