转载 https://cuiqingcai.com/5052.html
1.1 python3安装
配置环境变量;随后点击“新建”,新建一个条目,将刚才复制的C:\Python36复制进去。这里需要说明的是,此处的路径就是你的Python 3安装目录,请自行替换。然后,再把C:\Python36\Scripts路径复制进去
添加别名
上面这两种安装方式任选其一即可完成安装,但如果之前安装过Python 2的话,可能会导致版本冲突问题,比如在命令行下输入python
就不知道是调用的Python 2还是Python 3了。为了解决这个问题,建议将安装目录中的python.exe复制一份,命名为python3.exe,这样便可以调用python3
命令了。实际上,它和python
命令是完全一致的,这样只是为了可以更好地区分Python版本;在“开始”菜单中搜索cmd
,找到命令提示符,此时就进入命令行模式了。输入python
,测试一下能否成功调用Python。如果添加了别名的话,可以输入python3
测试,就调用了python3
1.2 请求库的安装
爬虫可以简单分为几步:抓取页面、分析页面和存储数据,用到一些Python库来实现HTTP请求操作;用到的第三方库有Requests、Selenium和aiohttp等
1.2.1 request的安装
安装方式 1 wheel 安装是Python的一种安装包,其后缀为.whl,在网速较差的情况下可以选择下载wheel文件再安装,然后直接用pip3
命令加文件名安装即可,下载对应的库的whl文件,切换到相应的目录执行 wheel文件目录,利用pip
安装即可 如 pip3 install requests-2.17.3-py2.py3-none-any.whl
pip 安装 命令行下执行 pip install requests
源码安装 git clone git://github.com/kennethreitz/requests.git ;cd request 执行 python3 setup.py install即可安装
1.2.2 selenium 的安装
pip install selenium
1.2.3 ChromeDriver驱动的配置
安装ChromeDriver。因为只有安装ChromeDriver,才能驱动Chrome浏览器完成相应的操作,下载浏览器对应版本号的ChromeDriver,可以直接将chromedriver.exe文件拖到Python的Scripts目录下;配置完成后,就可以在命令行下直接执行chromedriver
命令进行测试;弹出如下
Starting ChromeDriver 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8) on port 9515
Only local connections are allowed.
最新的Chrome浏览器版本已经支持无界面模式了
1.2.4 GeckoDriver安装
同ChromeDriver;配置完成后,就可以在命令行下直接执行geckodriver
命令测试,会弹出相关提示
1.2.5 PhantomJS 最新的Chrome浏览器版本已经支持无界面模式了
1.2.6 aiohttp
Requests库是一个阻塞式HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费资源。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。
aiohttp就是这样一个提供异步Web服务的库,从Python 3.5版本开始,Python中加入了async
/await
关键字,使得回调的写法更加直观和人性化。aiohttp的异步操作借助于async
/await
关键字的写法变得更加简洁,架构更加清晰
pip3 install aiohttp
官方还推荐安装如下两个库:一个是字符编码检测库cchardet,另一个是加速DNS的解析库aiodns。安装命令如下:
pip3 install cchardet aiodns
1.3 解析库
抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如lxml、Beautiful Soup、pyquery等。此外,还提供了非常强大的解析方法,如XPath解析和CSS选择器解析等,利用它们,我们可以高效便捷地从网页中提取有效信息
1.3.1 lxml
lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高
windows 安装 pip3 install lxml
1.3.2 Beautiful Soup
是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据。它拥有强大的API和多样的解析方式
Beautiful Soup的HTML和XML解析器是依赖于lxml库的,所以在此之前请确保已经成功安装好了lxml库
pip3 install beautifulsoup4
我们虽然安装的是beautifulsoup4这个包,但是在引入的时候却是bs4。这是因为这个包源代码本身的库文件夹名称就是bs4,所以安装完成之后,这个库文件夹就被移入到本机Python3的lib库里,所以识别到的库文件名就叫作bs4。
1.3.3
pyquery同样是一个强大的网页解析工具,它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器
pip3 install pyquery
1.3.4
OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容;tesserocr是Python的一个OCR识别库,但其实是对tesseract做的一层Python API封装,所以它的核心是tesseract。因此,在安装tesserocr之前,我们需要先安装tesseract
https://cuiqingcai.com/5189.html
pip3 install tesserocr pillow
1.4 数据库
为数据存储的重要部分,数据库同样是必不可少的,数据库可以分为关系型数据库和非关系型数据库
关系型数据库如SQLite、MySQL、Oracle、SQL Server、DB2等,其数据库是以表的形式存储,非关系型数据库如MongoDB、Redis,它们的存储形式是键值对,存储形式更加灵活
mysql 的安装
1.4.2 mongodb数据库
https://cuiqingcai.com/5205.html
1 下载mongodb msi 安装包直接安装
2 安装成功之后,进入MongoDB的安装目录,此处是C:\MongoDB\Server\3.4,在bin目录下新建同级目录data
3 然后进入data文件夹,新建子文件夹db来存储数据目录
4 之后打开命令行,进入MongoDB安装目录的bin目录下,运行MongoDB服务 mongod --dbpath "C:\MongoDB\Server\3.4\data\db" ;cmd会出现相关信息
5 在“开始”菜单中搜索cmd,找到命令行,然后右击它以管理员身份运行即可。
随后新建一个日志文件,在bin目录新建logs同级目录,进入之后新建一个mongodb.log文件,用于保存MongoDB的运行日志
6 cmd 执行 mongod --bind_ip 0.0.0.0 --logpath "C:\MongoDB\Server\3.4\logs\mongodb.log" --logappend --dbpath "C:\MongoDB\Server\3.4\data\db" --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
7 这里的意思是绑定IP为0.0.0.0(即任意IP均可访问),指定日志路径、数据库路径和端口,指定服务名称
8 如果没有出现错误提示,则证明MongoDB服务已经安装成功,可以在服务管理页面查看到系统服务
9 然后就可以设置它的开机启动方式了,如自动启动或手动启动等,这样我们就可以非常方便地管理MongoDB服务了。
10 启动服务后,在命令行下就可以利用mongo
命令进入MongoDB命令交互环境了,如图1-38所示。
1.4.3 redis
Redis是一个基于内存的高效的非关系型数据库
下载地址 https://github.com/MSOpenTech/redis/releases
在系统服务页面里,可以观察到多了一个正在运行到Redis服务
安装后,直接连接本地Redis即可
1.5 数据库想要和Python交互的话,还需要安装一些Python存储库,如MySQL需要安装PyMySQL,MongoDB需要安装PyMongo
1.5.1 pymysql
pip3 install pymysql
1.5.2 mongodb
pip3 install pymongo
1.5.3 redis
对于Redis来说,我们要使用redis-py库来与其交互
pip3 install redis
1.5.4 RedisDump
RedisDump是一个用于Redis数据导入/导出的工具,是基于Ruby实现的,所以要安装RedisDum
1.6 web库
在本书中,我们主要使用这些Web服务程序来搭建一些API接口,供我们的爬虫使用。例如,维护一个代理池,代理保存在Redis数据库中,我们要将代理池作为一个公共的组件使用,那么如何构建一个方便的平台来供我们获取这些代理呢?最合适不过的就是通过Web服务提供一个API接口,我们只需要请求接口即可获取新的代理,这样做简单、高效、实用