0%

Python

安装好了Scrapyd之后,我们可以直接请求它提供的API来获取当前主机的Scrapy任务运行状况。比如,某台主机的IP为192.168.1.1,则可以直接运行如下命令获取当前主机的所有Scrapy项目:

1
curl http://localhost:6800/listprojects.json

运行结果如下:

1
{"status": "ok", "projects": ["myproject", "otherproject"]}

返回结果是JSON字符串,通过解析这个字符串,便可以得到当前主机的所有项目。

但是用这种方式来获取任务状态还是有点烦琐,所以Scrapyd API就为它做了一层封装,下面我们来看下它的安装方式。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip install python-scrapyd-api

3. 验证安装

安装完成之后,便可以使用Python来获取主机状态了,所以上面的操作便可以用Python代码实现:

1
2
3
from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://localhost:6800')
print(scrapyd.list_projects())

运行结果如下:

1
["myproject", "otherproject"]

这样我们便可以用Python直接来获取各个主机上Scrapy任务的运行状态了。

Python

在将 Scrapy 代码部署到远程 Scrapyd 的时候,第一步就是要将代码打包为 EGG 文件,其次需要将 EGG 文件上传到远程主机。这个过程如果用程序来实现,也是完全可以的,但是我们并不需要做这些工作,因为 Scrapyd-Client 已经为我们实现了这些功能。

下面我们就来看看 Scrapyd-Client 的安装过程。

1. 相关链接

2. pip 安装

这里推荐使用 pip 安装,相关命令如下:

1
pip3 install scrapyd-client

3. 验证安装

安装成功后会有一个可用命令,叫作 scrapyd-deploy,即部署命令。

我们可以输入如下测试命令测试 Scrapyd-Client 是否安装成功:

1
scrapyd-deploy -h

如果出现类似如图 1-86 所示的输出,则证明 Scrapyd-Client 已经成功安装。

图 1-86 运行结果

Python

Scrapyd 是一个用于部署和运行 Scrapy 项目的工具,有了它,你可以将写好的 Scrapy 项目上传到云主机并通过 API 来控制它的运行。

既然是 Scrapy 项目部署,基本上都使用 Linux 主机,所以本节的安装是针对于 Linux 主机的。

1. 相关链接

2. pip 安装

这里推荐使用 pip 安装,命令如下:

1
pip3 install scrapyd

3. 配置

安装完毕之后,需要新建一个配置文件/etc/scrapyd/scrapyd.conf,Scrapyd 在运行的时候会读取此配置文件。

在 Scrapyd 1.2 版本之后,不会自动创建该文件,需要我们自行添加。

首先,执行如下命令新建文件:

1
2
sudo mkdir /etc/scrapyd
sudo vi /etc/scrapyd/scrapyd.conf

接着写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 10
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0
http_port = 6800
debug = off
runner = scrapyd.runner
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
webroot = scrapyd.website.Root

[services]
schedule.json = scrapyd.webservice.Schedule
cancel.json = scrapyd.webservice.Cancel
addversion.json = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json = scrapyd.webservice.ListSpiders
delproject.json = scrapyd.webservice.DeleteProject
delversion.json = scrapyd.webservice.DeleteVersion
listjobs.json = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

配置文件的内容可以参见官方文档https://scrapyd.readthedocs.io/en/stable/config.html#example-configuration-file。这里的配置文件有所修改,其中之一是max_proc_per_cpu官方默认为 4,即一台主机每个 CPU 最多运行 4 个 Scrapy 任务,在此提高为 10。另外一个是bind_address,默认为本地 127.0.0.1,在此修改为 0.0.0.0,以使外网可以访问。

4. 后台运行

Scrapyd 是一个纯 Python 项目,这里可以直接调用它来运行。为了使程序一直在后台运行,Linux 和 Mac 可以使用如下命令:

1
(scrapyd > /dev/null &)

这样 Scrapyd 就会在后台持续运行了,控制台输出直接忽略。当然,如果想记录输出日志,可以修改输出目标,如:

1
(scrapyd > ~/scrapyd.log &)

此时会将 Scrapyd 的运行结果输出到~/scrapyd.log 文件中。

当然也可以使用 screen、tmux、supervisor 等工具来实现进程守护。

运行之后,便可以在浏览器的 6800 端口访问 Web UI 了,从中可以看到当前 Scrapyd 的运行任务、日志等内容,如图 1-85 所示。

图 1-85 Scrapyd 首页

当然,运行 Scrapyd 更佳的方式是使用 Supervisor 守护进程,如果感兴趣,可以参考:http://supervisord.org/

另外,Scrapyd 也支持 Docker,后面我们会介绍 Scrapyd Docker 镜像的制作和运行方法。

5. 访问认证

配置完成后,Scrapyd 和它的接口都是可以公开访问的。如果想配置访问认证的话,可以借助于 Nginx 做反向代理,这里需要先安装 Nginx 服务器。

在此以 Ubuntu 为例进行说明,安装命令如下:

1
sudo apt-get install nginx

然后修改 Nginx 的配置文件 nginx.conf,增加如下配置:

1
2
3
4
5
6
7
8
9
10
http {
server {
listen 6801;
location / {
proxy_pass http://127.0.0.1:6800/;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
}
}

这里使用的用户名和密码配置放置在/etc/nginx/conf.d 目录下,我们需要使用htpasswd命令创建。例如,创建一个用户名为 admin 的文件,命令如下:

1
htpasswd -c .htpasswd admin

接着就会提示我们输入密码,输入两次之后,就会生成密码文件。此时查看这个文件的内容:

1
2
cat .htpasswd
admin:5ZBxQr0rCqwbc

配置完成后,重启一下 Nginx 服务,运行如下命令:

1
sudo nginx -s reload

这样就成功配置了 Scrapyd 的访问认证了。

Python

Docker 是一种容器技术,可以将应用和环境等进行打包,形成一个独立的、类似于 iOS 的 App 形式的“应用”。这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。Docker 是一种最流行的容器化实现方案,和虚拟化技术类似,它极大地方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker,可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过它们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源管理,也比虚拟化技术更加节约资源。

对于爬虫来说,如果我们需要大规模部署爬虫系统的话,用 Docker 会大大提高效率。工欲善其事,必先利其器。

本节中,我们就来介绍三大平台下 Docker 的安装方式。

1. 相关链接

2. Windows 下的安装

如果你的系统是 Windows 10 64 位,那么推荐使用 Docker for Windows。此时直接从 Docker 官方网站下载最新的 Docker for Windows 安装包即可:https://docs.docker.com/docker-for-windows/install/

如果不是 Windows 10 64 位系统,则可以下载 Docker Toolbox:https://docs.docker.com/toolbox/toolbox_install_windows/

下载后直接双击安装即可,详细过程可以参考文档说明。安装完成后,进入命令行。

运行docker命令测试:

1
docker

运行结果如图 1-81 所示,这就证明 Docker 安装成功了。

图 1-81 运行结果

3. Linux 下的安装

详细的分步骤安装说明可以参见官方文档:https://docs.docker.com/engine/installation/linux/ubuntu/

官方文档中详细说明了不同 Linux 系统的安装方法,根据文档一步步执行即可安装成功。但是为了使安装更加方便,Docker 官方还提供了一键安装脚本。使用它,会使安装更加便捷,不用再去一步步执行命令安装了。

首先是 Docker 官方提供的安装脚本。相比其他脚本,官方提供的一定更靠谱,安装命令如下:

1
curl -sSL https://get.docker.com/ | sh

只要执行如上一条命令,等待一会儿 Docker 便会安装完成,这非常方便。

但是使用官方脚本安装有一个缺点,那就是慢,也可能下载超时,所以为了加快下载速度,我们可以使用国内的镜像来安装,所以这里还有阿里云和 DaoCloud 的安装脚本。

阿里云的安装脚本:

1
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

DaoCloud 的安装脚本:

1
curl -sSL https://get.daocloud.io/docker | sh

这两个脚本可以任选其一,速度都非常不错。

等待脚本执行完毕之后,就可以使用 Docker 相关命令了,如运行测试 Hello World 镜像:

1
docker run hello-world

运行结果:

1
2
3
4
5
6
7
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.

如果出现类似上面提示的内容,则证明 Docker 可以正常使用了。

4. Mac 下的安装

Mac 平台同样有两种选择:Docker for Mac 和 Docker Toolbox。

Docker for Mac 要求系统为 OS X EI Captain 10.11 或更新,至少 4GB 内存。如果你的系统满足此要求,则强烈建议安装 Docker for Mac。

这里可以使用 Homebrew 安装,安装命令如下:

1
brew cask install docker

另外,也可以手动下载安装包(下载地址为:https://download.docker.com/mac/stable/Docker.dmg)安装。

下载完成后,直接双击安装包,然后将程序拖动到应用程序中即可。

点击程序图标运行 Docker,会发现在菜单栏中出现了 Docker 的图标,如图 1-82 中的第三个小鲸鱼图标。

图 1-82 菜单栏

点击小鲸鱼图标,展开菜单之后,再点击 Start 按钮即可启动 Docker。启动成功后,便会提示 Docker is running,如图 1-83 所示。

图 1-83 运行页面

随后,我们就可以在命令行下使用 Docker 命令了。

可以使用如下命令测试运行:

1
sudo docker run hello-world

运行结果如图 1-84 所示,这就证明 Docker 已经成功安装了。

图 1-84 运行结果

如果系统不满足要求,可以下载 Docker Toolbox,其安装说明为:https://docs.docker.com/toolbox/overview/

关于 Docker for Mac 和 Docker Toolbox 的区别,可以参见:https://docs.docker.com/docker-for-mac/docker-toolbox/

5. 镜像加速

安装好 Docker 之后,在运行测试命令时,我们会发现它首先会下载一个 Hello World 的镜像,然后将其运行。但是这里的下载速度有时候会非常慢,这是因为它默认还是从国外的 Docker Hub 下载的。因此,为了提高镜像的下载速度,我们还可以使用国内镜像来加速下载,于是就有了 Docker 加速器一说。

推荐的 Docker 加速器有 DaoCloud(详见https://www.daocloud.io/mirror)和阿里云(详见https://cr.console.aliyun.com/#/accelerator)。

不同平台的镜像加速方法配置可以参考 DaoCloud 的官方文档:http://guide.daocloud.io/dcs/daocloud-9153151.html

配置完成之后,可以发现镜像的下载速度会快非常多。

Python

如果想要大规模抓取数据,那么一定会用到分布式爬虫。对于分布式爬虫来说,我们需要多台主机,每台主机多个爬虫任务,但是源代码其实只有一份。此时我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就是另一个值得思考的问题。

对于Scrapy来说,它有一个扩展组件,叫作Scrapyd,我们只需要安装该扩展组件,即可远程管理Scrapy任务,包括部署源码、启动任务、监听任务等。另外,还有Scrapyd-Client和Scrapyd API来帮助我们更方便地完成部署和监听操作。

另外,还有一种部署方式,那就是Docker集群部署。我们只需要将爬虫制作为Docker镜像,只要主机安装了Docker,就可以直接运行爬虫,而无需再去担心环境配置、版本问题。

本节中,我们就来介绍相关环境的配置过程。

Python

Scrapy-Redis是Scrapy的分布式扩展模块,有了它,我们就可以方便地实现Scrapy分布式爬虫的搭建。本节中,我们将介绍Scrapy-Redis的安装方式。

相关链接

pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install scrapy-redis

wheel安装

此外,也可以到PyPI下载wheel文件安装(详见https://pypi.python.org/pypi/scrapy-redis#downloads),如当前的最新版本为0.6.8,则可以下载scrapy_redis-0.6.8-py2.py3-none-any.whl,然后通过pip安装即可:

1
pip3 install scrapy_redis-0.6.8-py2.py3-none-any.whl

测试安装

安装完成之后,可以在Python命令行下测试:

1
2
$ python3
>>> import scrapy_redis

如果没有错误报出,则证明库已经安装好了。

Python

Scrapy-Splash 是一个 Scrapy 中支持 JavaScript 渲染的工具,本节来介绍它的安装方式。

Scrapy-Splash 的安装分为两部分。一个是 Splash 服务的安装,具体是通过 Docker,安装之后,会启动一个 Splash 服务,我们可以通过它的接口来实现 JavaScript 页面的加载。另外一个是 Scrapy-Splash 的 Python 库的安装,安装之后即可在 Scrapy 中使用 Splash 服务。

1. 相关链接

2. 安装 Splash

Scrapy-Splash 会使用 Splash 的 HTTP API 进行页面渲染,所以我们需要安装 Splash 来提供渲染服务。这里通过 Docker 安装,在这之前请确保已经正确安装好了 Docker。

安装命令如下:

1
docker run -p 8050:8050 scrapinghub/splash

安装完成之后,会有类似的输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2017-07-03 08:53:28+0000 [-] Log opened.
2017-07-03 08:53:28.447291 [-] Splash version: 3.0
2017-07-03 08:53:28.452698 [-] Qt 5.9.1, PyQt 5.9, WebKit 602.1, sip 4.19.3, Twisted 16.1.1, Lua 5.2
2017-07-03 08:53:28.453120 [-] Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609]
2017-07-03 08:53:28.453676 [-] Open files limit: 1048576
2017-07-03 08:53:28.454258 [-] Can't bump open files limit
2017-07-03 08:53:28.571306 [-] Xvfb is started: ['Xvfb', ':1599197258', '-screen', '0', '1024x768x24', '-nolisten', 'tcp']
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
2017-07-03 08:53:29.041973 [-] proxy profiles support is enabled, proxy profiles path: /etc/splash/proxy-profiles
2017-07-03 08:53:29.315445 [-] verbosity=1
2017-07-03 08:53:29.315629 [-] slots=50
2017-07-03 08:53:29.315712 [-] argument_cache_max_entries=500
2017-07-03 08:53:29.316564 [-] Web UI: enabled, Lua: enabled (sandbox: enabled)
2017-07-03 08:53:29.317614 [-] Site starting on 8050
2017-07-03 08:53:29.317801 [-] Starting factory <twisted.web.server.Site object at 0x7ffaa4a98cf8>

这样就证明 Splash 已经在 8050 端口上运行了。这时我们打开http://localhost:8050,即可看到 Splash 的主页,如图 1-80 所示。

图 1-80 运行页面

当然,Splash 也可以直接安装在远程服务器上。我们在服务器上以守护态运行 Splash 即可,命令如下:

1
docker run -d -p 8050:8050 scrapinghub/splash

这里多了\-d参数,它代表将 Docker 容器以守护态运行,这样在中断远程服务器连接后,不会终止 Splash 服务的运行。

3. Scrapy-Splash 的安装

成功安装 Splash 之后,接下来再来安装其 Python 库,命令如下:

1
pip3 install scrapy-splash

命令运行完毕后,就会成功安装好此库,后面会详细介绍它的用法。

Python

Scrapy 是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有 Twisted 14.0、lxml 3.4 和 pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。本节就来介绍 Scrapy 在不同平台的安装方法。

1. 相关链接

2. Anaconda 安装

这是一种比较简单的安装 Scrapy 的方法(尤其是对于 Windows 来说),如果你的 Python 是使用 Anaconda 安装的,或者还没有安装 Python 的话,可以使用此方法安装,这种方法简单、省力。当然,如果你的 Python 不是通过 Anaconda 安装的,可以继续看后面的内容。

关于 Anaconda 的安装方式,可以查看 1.1 节,在此不再赘述。

如果已经安装好了 Anaconda,那么可以通过conda命令安装 Scrapy,具体如下:

1
conda install Scrapy

3. Windows 下的安装

如果你的 Python 不是使用 Anaconda 安装的,可以参考如下方式来一步步安装 Scrapy。

安装 lxml

lxml 的安装过程请参见 1.3.1 节,在此不再赘述,此库非常重要,请一定要安装成功。

安装 pyOpenSSL

在官方网站下载 wheel 文件(详见https://pypi.python.org/pypi/pyOpenSSL#downloads)即可,如图 1-76 所示。

图 1-76 下载页面

下载后利用 pip 安装即可:

1
pip3 install pyOpenSSL-17.2.0-py2.py3-none-any.whl

安装 Twisted

http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted下载 wheel 文件,利用 pip 安装即可。

比如,对于 Python 3.6 版本、Windows 64 位系统,则当前最新版本为 Twisted‑17.5.0‑cp36‑cp36m‑win_amd64.whl,直接下载即可,如图 1-77 所示。

图 1-77 下载页面

然后通过 pip 安装:

1
pip3 install Twisted‑17.5.0cp36cp36mwin_amd64.whl

安装 PyWin32

从官方网站下载对应版本的安装包即可,链接为:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/,如图 1-78 所示。

图 1-78 下载列表

比如对于 Python 3.6 版本,可以选择下载 pywin32-221.win-amd64-py3.6.exe,下载完毕之后双击安装即可。

注意,这里使用的是 Build 221 版本,随着时间推移,版本肯定会继续更新,最新的版本可以查看https://sourceforge.net/projects/pywin32/files/pywin32/,到时查找最新的版本安装即可。

安装 Scrapy

安装好了以上的依赖库后,安装 Scrapy 就非常简单了,这里依然使用 pip,命令如下:

1
pip3 install Scrapy

等待命令结束,如果没有报错,就证明 Scrapy 已经安装好了。

4. Linux 下的安装

在 Linux 下的安装方式依然分为两类平台来介绍。

CentOS 和 Red Hat

在 CentOS 和 Red Hat 下,首先确保一些依赖库已经安装,运行如下命令:

1
2
sudo yum groupinstall -y development tools
sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel

最后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 平台下,首先确保一些依赖库已经安装,运行如下命令:

1
sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

然后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

运行完毕后,就完成 Scrapy 的安装了。

5. Mac 下的安装

在 Mac 下,首先也是进行依赖库的安装。

在 Mac 上构建 Scrapy 的依赖库需要 C 编译器以及开发头文件,它一般由 Xcode 提供,具体命令如下:

1
xcode-select --install

随后利用 pip 安装 Scrapy 即可:

1
pip3 install Scrapy

6. 验证安装

安装之后,在命令行下输入scrapy,如果出现类似如图 1-79 所示的结果,就证明 Scrapy 安装成功了。

图 1-79 验证安装

7. 常见错误

在安装过程中,常见的错误汇总如下。

pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python3/dist-packages), Requirement.parse('six>=1.6.0'))

这是 six 包版本过低出现的错误。six 包是一个提供兼容 Python 2 和 Python 3 的库,这时升级 six 包即可:

1
sudo pip3 install -U six
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory

这是在 Linux 下常出现的错误,缺少 libffi 库造成的。什么是 libffi?FFI 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码。而 libffi 库只提供了最底层的、与架构相关的、完整的 FFI。此时安装相应的库即可。

在 Ubuntu 和 Debian 下,直接执行如下命令即可:

1
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

在 CentOS 和 Red Hat 下,直接执行如下命令即可:

1
sudo yum install gcc libffi-devel python-devel openssl-devel
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build/cryptography/

这是缺少加密的相关组件,此时利用 pip 安装即可:

1
pip3 install cryptography
ImportError: No module named 'packaging'

这是因为缺少 packaging 包出现的错误,这个包提供了 Python 包的核心功能,此时利用 pip 安装即可。

ImportError: No module named '_cffi_backend'

这个错误表示缺少 cffi 包,直接使用 pip 安装即可:

1
pip3 install cffi
ImportError: No module named 'pyparsing'

这个错误表示缺少 pyparsing 包,直接使用 pip 安装即可:

1
pip3 install pyparsing appdirs

Python

pyspider 是国人 binux 编写的强大的网络爬虫框架,它带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,另外还支持 JavaScript 渲染页面的爬取,使用起来非常方便,本节介绍一下它的安装过程。

1. 相关链接

2. 准备工作

pyspider 是支持 JavaScript 渲染的,而这个过程是依赖于 PhantomJS 的,所以还需要安装 PhantomJS(具体的安装过程详见 1.2.5 节)。

3. pip 安装

这里推荐使用 pip 安装,命令如下:

1
pip3 install pyspider

命令执行完毕即可完成安装。

4. 常见错误

Windows 下可能会出现这样的错误提示:

1
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vXo1W3/pycurl

这是 PyCurl 安装错误,此时需要安装 PyCurl 库。从http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl找到对应的 Python 版本,然后下载相应的 wheel 文件即可。比如 Windows 64 位、Python 3.6,则需要下载 pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl,随后用 pip 安装即可,命令如下:

1
pip3 install pycurl‑7.43.0cp36cp36mwin_amd64.whl

如果在 Linux 下遇到 PyCurl 的错误,可以参考本文:https://imlonghao.com/19.html

5. 验证安装

安装完成之后,可以直接在命令行下启动 pyspider:

1
pyspider all

此时控制台会有类似如图 1-74 所示的输出。

图 1-74 控制台

这时 pyspider 的 Web 服务就会在本地 5000 端口运行。直接在浏览器中打开http://localhost:5000/,即可进入 pyspider 的 WebUI 管理页面,如图 1-75 所示,这证明 pyspider 已经安装成功了。

图 1-75 管理页面

后面,我们会详细介绍 pyspider 的用法。

Python

我们直接用Requests、Selenium等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。

利用框架,我们可以不用再去关心某些功能的具体实现,只需要关心爬取逻辑即可。有了它们,可以大大简化代码量,而且架构也会变得清晰,爬取效率也会高许多。所以,如果有一定的基础,上手框架是一种好的选择。

本书主要介绍的爬虫框架有pyspider和Scrapy。本节中,我们来介绍一下pyspider、Scrapy及其扩展库的安装方式。

Python

Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它可以驱动 Android、iOS 等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为:http://appium.io/。本节中,我们就来了解一下 Appium 的安装方式。

1. 相关链接

2. 安装 Appium

首先,需要安装 Appium。Appium 负责驱动移动端来完成一系列操作,对于 iOS 设备来说,它使用苹果的 UIAutomation 来实现驱动;对于 Android 来说,它使用 UIAutomator 和 Selendroid 来实现驱动。

同时 Appium 也相当于一个服务器,我们可以向它发送一些操作指令,它会根据不同的指令对移动设备进行驱动,以完成不同的动作。

安装 Appium 有两种方式,一种是直接下载安装包 Appium Desktop 来安装,另一种是通过 Node.js 来安装,下面我们介绍一下这两种安装方式。

Appium Desktop

Appium Desktop 支持全平台的安装,我们直接从 GitHub 的 Releases 里面安装即可,链接为https://github.com/appium/appium-desktop/releases。目前的最新版本是 1.1,下载页面如图 1-71 所示。

图 1-71 下载页面

Windows 平台可以下载 exe 安装包 appium-desktop-Setup-1.1.0.exe,Mac 平台可以下载 dmg 安装包如 appium-desktop-1.1.0.dmg,Linux 平台可以选择下载源码,但是更推荐用 Node.js 安装方式。

安装完成后运行,看到的页面如图 1-72 所示。

图 1-72 运行页面

如果出现此页面,则证明安装成功。

Node.js

首先需要安装 Node.js,具体的安装方式可以参见http://www.runoob.com/nodejs/nodejs-install-setup.html,安装完成之后就可以使用npm命令了。

接下来,使用npm命令全局安装 Appium 即可:

1
npm install -g appium

此时等待命令执行完成即可,这样就成功安装了 Appium。

3. Android 开发环境配置

如果我们要使用 Android 设备做 App 抓取的话,还需要下载和配置 Android SDK,这里推荐直接安装 Android Studio,其下载地址为https://developer.android.com/studio/index.html?hl=zh-cn。下载后直接安装即可。

然后,我们还需要下载 Android SDK。直接打开首选项里面的 Android SDK 设置页面,勾选要安装的 SDK 版本,点击 OK 按钮即可下载和安装勾选的 SDK 版本,如图 1-73 所示。

图 1-73 Android SDK 设置页面

另外,还需要配置一下环境变量,添加 ANDROID_HOME 为 Android SDK 所在路径,然后再添加 SDK 文件夹下的 tools 和 platform-tools 文件夹到 PATH 中。

更详细的配置可以参考 Android Studio 的官方文档:https://developer.android.com/studio/intro/index.html

4. iOS 开发环境

首先需要声明的是,Appium 是一个做自动化测试的工具,用它来测试我们自己开发的 App 是完全没问题的,因为它携带的是开发证书(Development Certificate)。但如果我们想拿 iOS 设备来做数据爬取的话,那又是另外一回事了。一般情况下,我们做数据爬取都是使用现有的 App,在 iOS 上一般都是通过 App Store 下载的,它携带的是分发证书(Distribution Certificate),而携带这种证书的应用都是禁止被测试的,所以只有获取 ipa 安装包再重新签名之后才可以被 Appium 测试,具体的方法这里不再展开阐述。

这里推荐直接使用 Android 来进行测试。如果你可以完成上述重签名操作,那么可以参考如下内容配置 iOS 开发环境。

Appium 驱动 iOS 设备必须要在 Mac 下进行,Windows 和 Linux 平台是无法完成的,所以下面介绍一下 Mac 平台的相关配置。

Mac 平台需要的配置如下:

  • macOS 10.12 及更高版本
  • XCode 8 及更高版本

配置满足要求之后,执行如下命令即可配置开发依赖的一些库和工具:

1
xcode-select --install

这样 iOS 部分的开发环境就配置完成了,我们就可以用 iOS 模拟器来进行测试和数据抓取了。

如果想要用真机进行测试和数据抓取,还需要额外配置其他环境,具体可以参考https://github.com/appium/appium/blob/master/docs/en/appium-setup/real-devices-ios.md

5. Python 驱动

另外还需要安装 Python 驱动,命令如下:

1
pip3 install appium-python-client

Python

mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它通过控制台的形式操作。

此外,mitmproxy 还有两个关联组件,一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本,实现监听后的处理;另一个是 mitmweb,它是一个 Web 程序,通过它以清楚地观察到 mitmproxy 捕获的请求。

本节中,我们就来了解一下 mitmproxy、mitmdump 和 mitmweb 的安装方式。

1. 相关链接

2. pip 安装

最简单的安装方式还是使用 pip,直接执行如下命令即可安装:

1
pip3 install mitmproxy

这是最简单和通用的安装方式,执行完毕之后即可完成 mitmproxy 的安装,另外还附带安装了 mitmdump 和 mitmweb 这两个组件。如果不想用这种方式安装,也可以选择后面列出的专门针对各个平台的安装方式或者 Docker 安装方式。

3. Windows 下的安装

可以到 GitHub 上的 Releases 页面(链接为:https://github.com/mitmproxy/mitmproxy/releases/)获取安装包,如图 1-59 所示。 图 1-59 下载页面

比如,当前的最新版本为 2.0.2,则可以选择下载 Windows 下的 exe 安装包 mitmproxy-2.0.2-windows-installer.exe,下载后直接双击安装包即可安装。

注意,在 Windows 上不支持 mitmproxy 的控制台接口,但是可以使用 mitmdump 和 mitmweb。

4. Linux 下的安装

在 Linux 下,可以下载编译好的二进制包(下载地址https://github.com/mitmproxy/mitmproxy/releases/),此发行包一般是最新版本,它包含了最新版本的 mitmproxy 和内置的 Python 3 环境,以及最新的 OpenSSL 环境。

如果你的环境里没有 Python 3 和 OpenSSL 环境,建议使用此种方式安装。

下载之后,需要解压并将其配置到环境变量:

1
2
tar -zxvf mitmproxy-2.0.2-linux.tar.gz
sudo mv mitmproxy mitmdump mitmweb /usr/bin

这样就可以将 3 个可执行文件移动到了/usr/bin 目录。而一般情况下,/usr/bin 目录都已经配置在了环境变量下,所以接下来可以直接调用这 3 个工具了。

5. Mac 下的安装

Mac 下的安装非常简单,直接使用 Homebrew 即可,命令如下:

1
brew install mitmproxy

执行命令后,即可完成 mitmproxy 的安装。

6. Docker 安装

mitmproxy 也支持 Docker,其 DockerHub 的地址为https://hub.docker.com/r/mitmproxy/mitmproxy/

在 Docker 下,mitmproxy 的安装命令为:

1
docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样就在 8080 端口上启动了 mitmproxy 和 mitmdump。

如果想要获取 CA 证书,可以选择挂载磁盘选项,命令如下:

1
docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样就可以在~/.mitmproxy 目录下找到 CA 证书。

另外,还可以在 8081 端口上启动 mitmweb,命令如下:

1
docker run --rm -it -p 8080:8080 -p 127.0.0.1:8081:8081 mitmproxy/mitmproxy mitmweb

更多启动方式可以参考 Docker Hub 的安装说明。

7. 证书配置

对于 mitmproxy 来说,如果想要截获 HTTPS 请求,就需要设置证书。mitmproxy 在安装后会提供一套 CA 证书,只要客户端信任了 mitmproxy 提供的证书,就可以通过 mitmproxy 获取 HTTPS 请求的具体内容,否则 mitmproxy 是无法解析 HTTPS 请求的。

首先,运行以下命令产生 CA 证书,并启动 mitmdump:

1
mitmdump

接下来,我们就可以在用户目录下的.mitmproxy 目录里面找到 CA 证书,如图 1-60 所示。

图 1-60 证书文件

证书一共 5 个,表 1-1 简要说明了这 5 个证书。

表 1-1 5 个证书及其说明

名称

描述

mitmproxy-ca.pem

PEM 格式的证书私钥

mitmproxy-ca-cert.pem

PEM 格式证书,适用于大多数非 Windows 平台

mitmproxy-ca-cert.p12

PKCS12 格式的证书,适用于 Windows 平台

mitmproxy-ca-cert.cer

与 mitmproxy-ca-cert.pem 相同,只是改变了后缀,适用于部分 Android 平台

mitmproxy-dhparam.pem

PEM 格式的秘钥文件,用于增强 SSL 安全性

下面我们介绍一下 Windows、Mac、iOS 和 Android 平台下的证书配置过程。

Windows

双击 mitmproxy-ca.p12,就会出现导入证书的引导页,如图 1-61 所示。

图 1-61 证书导入向导

直接点击“下一步”按钮即可,会出现密码设置提示,如图 1-62 所示。

图 1-62 密码设置提示

这里不需要设置密码,直接点击“下一步”按钮即可。

接下来需要选择证书的存储区域,如图 1-63 所示。这里点击第二个选项“将所有的证书都放入下列存储”,然后点击“浏览”按钮,选择证书存储位置为“受信任的根证书颁发机构”,接着点击“确定”按钮,然后点击“下一步”按钮。

图 1-63 选择证书存储区域

最后,如果有安全警告弹出,如图 1-64 所示,直接点击“是”按钮即可。

图 1-64 安全警告

这样就在 Windows 下配置完 CA 证书了。

Mac

Mac 下双击 mitmproxy-ca-cert.pem 即可弹出钥匙串管理页面,然后找到 mitmproxy 证书,打开其设置选项,选择“始终信任”即可,如图 1-65 所示。

图 1-65 证书配置

iOS

将 mitmproxy-ca-cert.pem 文件发送到 iPhone 上,推荐使用邮件方式发送,然后在 iPhone 上可以直接点击附件并识别安装,如图 1-66 所示。

图 1-66 证书安装页面

点击“安装”按钮之后,会跳到安装描述文件的页面,点击“安装”按钮,此时会有警告提示,如图 1-67 所示。

图 1-67 安装警告页面

继续点击右上角的“安装”按钮,安装成功之后会有已安装的提示,如图 1-68 所示。

图 1-68 安装成功页面

如果你的 iOS 版本是 10.3 以下的话,此处信任 CA 证书的流程就已经完成了。

如果你的 iOS 版本是 10.3 及以上版本,还需要在“设置”→“通用”→“关于本机”→“证书信任设置”将 mitmproxy 的完全信任开关打开,如图 1-69 所示。此时,在 iOS 上配置信任 CA 证书的流程就结束了。

图 1-69 证书信任设置

Android

在 Android 手机上,同样需要将证书 mitmproxy-ca-cert.pem 文件发送到手机上,例如直接复制文件。

接下来,点击证书,便会出现一个提示窗口,如图 1-70 所示。

图 1-70 证书安装页面

这时输入证书的名称,然后点击“确定”按钮即可完成安装。

Python

Charles 是一个网络抓包工具,相比 Fiddler,其功能更为强大,而且跨平台支持得更好,所以这里选用它来作为主要的移动端抓包工具。

1. 相关链接

2. 下载 Charles

我们可以在官网下载最新的稳定版本,如图 1-43 所示。可以发现,它支持 Windows、Linux 和 Mac 三大平台。

图 1-43 Charles 下载页面

直接点击对应的安装包下载即可,具体的安装过程这里不再赘述。

Charles 是收费软件,不过可以免费试用 30 天。如果试用期过了,其实还可以试用,不过每次试用不能超过 30 分钟,启动有 10 秒的延时,但是完整的软件功能还是可以使用的,所以还算比较友好。

3. 证书配置

现在很多页面都在向 HTTPS 方向发展,HTTPS 通信协议应用得越来越广泛。如果一个 App 通信应用了 HTTPS 协议,那么它通信的数据都会是被加密的,常规的截包方法是无法识别请求内部的数据的。

安装完成后,如果我们想要做 HTTPS 抓包的话,那么还需要配置一下相关 SSL 证书。接下来,我们再看看各个平台下的证书配置过程。

Charles 是运行在 PC 端的,我们要抓取的是 App 端的数据,所以要在 PC 和手机端都安装证书。

Windows

如果你的 PC 是 Windows 系统,可以按照下面的操作进行证书配置。

首先打开 Charles,点击 Help→SSL Proxying→Install Charles Root Certificate,即可进入证书的安装页面,如图 1-44 所示。

图 1-44 证书安装页面入口

接下来,会弹出一个安装证书的页面,如图 1-45 所示。

图 1-45 证书安装页面

点击“安装证书”按钮,就会打开证书导入向导,如图 1-46 所示。

图 1-46 证书导入向导

直接点击“下一步”按钮,此时需要选择证书的存储区域,点击第二个选项“将所有的证书放入下列存储”,然后点击“浏览”按钮,从中选择证书存储位置为“受信任的根证书颁发机构”,再点击“确定”按钮,然后点击“下一步”按钮,如图 1-47 所示。

图 1-47 选择证书存储区域

再继续点击“下一步”按钮完成导入。

Mac

如果你的 PC 是 Mac 系统,可以按照下面的操作进行证书配置。

同样是点击 Help→SSL Proxying→Install Charles Root Certificate,即可进入证书的安装页面。

接下来,找到 Charles 的证书并双击,将“信任”设置为“始终信任”即可,如图 1-48 所示。

图 1-48 证书配置

这样就成功安装了证书。

iOS

如果你的手机是 iOS 系统,可以按照下面的操作进行证书配置。

首先,查看电脑的 Charles 代理是否开启,具体操作是点击 Proxy→Proxy Settings,打开代理设置页面,确保当前的 HTTP 代理是开启的,如图 1-49 所示。这里的代理端口为 8888,也可以自行修改。

图 1-49 代理设置

接下来,将手机和电脑连在同一个局域网下。例如,当前电脑的 IP 为 192.168.1.76,那么首先设置手机的代理为 192.168.1.76:8888,如图 1-50 所示。

图 1-50 代理设置

设置完毕后,电脑上会出现一个提示窗口,询问是否信任此设备,如图 1-51 所示。

图 1-51 提示窗口

此时点击 Allow 按钮即可。这样手机就和 PC 连在同一个局域网内了,而且设置了 Charles 的代理,即 Charles 可以抓取到流经 App 的数据包了。

接下来,再安装 Charles 的 HTTPS 证书。

在电脑上打开 Help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser,如图 1-52 所示。

图 1-52 证书安装页面入口

此时会看到如图 1-53 所示的提示。

图 1-53 提示窗口

它提示我们在手机上设置好 Charles 的代理(刚才已经设置好了),然后在手机浏览器中打开 chls.pro/ssl 下载证书。

在手机上打开 chls.pro/ssl 后,便会弹出证书的安装页面,如图 1-54 所示:

图 1-54 证书安装页面

点击“安装”按钮,然后输入密码即可完成安装,如图 1-55 所示。

图 1-55 安装成功页面

如果你的 iOS 版本是 10.3 以下的话,信任 CA 证书的流程就已经完成了。

如果你的 iOS 版本是 10.3 及以上,还需要在“设置”→“通用”→“关于本机”→“证书信任设置”中将证书的完全信任开关打开,如图 1-56 所示。

图 1-56 证书信任设置

Android

如果你的手机是 Android 系统,可以按照下面的操作进行证书配置。

在 Android 系统中,同样需要设置代理为 Charles 的代理,如图 1-57 所示。

图 1-57 代理设置

设置完毕后,电脑上就会出现一个提示窗口,询问是否信任此设备,如图 1-51 所示,此时直接点击 Allow 按钮即可。

接下来,像 iOS 设备那样,在手机浏览器上打开 chls.pro/ssl,这时会出现一个提示框,如图 1-58 所示。

图 1-58 证书安装页面

我们为证书添加一个名称,然后点击“确定”按钮即可完成证书的安装。

Python

除了Web网页,爬虫也可以抓取App的数据。App中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的。由于App没有浏览器这种可以比较直观地看到后台请求的工具,所以主要用一些抓包技术来抓取数据。

本书介绍的抓包工具有Charles、mitmproxy和mitmdump。一些简单的接口可以通过Charles或mitmproxy分析,找出规律,然后直接用程序模拟来抓取了。但是如果遇到更复杂的接口,就需要利用mitmdump对接Python来对抓取到的请求和响应进行实时处理和保存。另外,既然要做规模采集,就需要自动化App的操作而不是人工去采集,所以这里还需要一个工具叫作Appium,它可以像Selenium一样对App进行自动化控制,如自动化模拟App的点击、下拉等操作。

本节中,我们就来介绍一下Charles、mitmproxy、mitmdump、Appium的安装方法。

Python

Tornado 是一个支持异步的 Web 框架,通过使用非阻塞 I/O 流,它可以支撑成千上万的开放连接,效率非常高,本节就来介绍一下它的安装方式。

1. 相关链接

2. pip 安装

这里推荐使用 pip 安装,相关命令如下:

1
pip3 install tornado

执行完毕后,即可完成安装。

3. 验证安装

同样,这里也可以用一个 Hello World 程序测试一下,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()

直接运行程序,可以发现系统在 8888 端口运行了 Web 服务,控制台没有输出内容,此时访问http://127.0.0.1:8888/,可以观察到网页中呈现了 Hello,world,如图 1-42 所示,这就说明 Tornado 成功安装了。

图 1-42 运行结果

4.结语

后面,我们会利用 Tornado+Redis 来搭建一个 ADSL 拨号代理池。

Python

Flask 是一个轻量级的 Web 服务程序,它简单、易用、灵活,这里主要用来做一些 API 服务。

1. 相关链接

2. pip 安装

这里推荐使用 pip 安装,命令如下:

1
pip3 install flask

运行完毕后,就完成安装了。

3. 验证安装

安装成功后,可以运行如下实例代码测试一下:

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

if __name__ == "__main__":
app.run()

可以发现,系统会在 5000 端口开启 Web 服务,控制台输出如下:

1
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

直接访问http://127.0.0.1:5000/,可以观察到网页中呈现了 Hello World!,如图 1-41 所示,一个最简单的 Flask 程序就运行成功了。

图 1-41 运行结果

4. 结语

后面,我们会利用 Flask+Redis 维护动态代理池和 Cookies 池。

Python

对于Web,我们应该都不陌生,现在日常访问的网站都是Web服务程序搭建而成的。Python同样不例外,也有一些这样的Web服务程序,比如Flask、Django等,我们可以拿它来开发网站和接口等。

在本书中,我们主要使用这些Web服务程序来搭建一些API接口,供我们的爬虫使用。例如,维护一个代理池,代理保存在Redis数据库中,我们要将代理池作为一个公共的组件使用,那么如何构建一个方便的平台来供我们获取这些代理呢?最合适不过的就是通过Web服务提供一个API接口,我们只需要请求接口即可获取新的代理,这样做简单、高效、实用!

书中用到的一些Web服务程序主要有Flask和Tornado,这里就分别介绍它们的安装方法。

Python

RedisDump是一个用于Redis数据导入/导出的工具,是基于Ruby实现的,所以要安装RedisDump,需要先安装Ruby。

1. 相关链接

2. 安装Ruby

有关Ruby的安装方式可以参考http://www.ruby-lang.org/zh_cn/documentation/installation,这里列出了所有平台的安装方式,可以根据对应的平台选用合适的安装方式。

3. gem安装

安装完成之后,就可以执行gem命令了,它类似于Python中的pip命令。利用gem命令,我们可以安装RedisDump,具体如下:

1
gem install redis-dump

执行完毕之后,即可完成RedisDump的安装。

4. 验证安装

安装成功后,就可以执行如下两个命令:

1
2
redis-dump
redis-load

如果可以成功调用,则证明安装成功。

Python

对于Redis来说,我们要使用redis-py库来与其交互,这里就来介绍一下它的安装方法。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install redis

运行完毕之后,即可完成redis-py的安装。

3. 验证安装

为了验证redis-py库是否已经安装成功,可以在命令行下测试一下:

1
2
3
4
5
$ python3
>>> import redis
>>> redis.VERSION
(2, 10, 5)
>>>

如果成功输出了其版本内容,那么证明成功安装了redis-py。

Python

在Python中,如果想要和MongoDB进行交互,就需要借助于PyMongo库,这里就来了解一下它的安装方法。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install pymongo

运行完毕之后,即可完成PyMongo的安装。

3. 验证安装

为了验证PyMongo库是否已经安装成功,可以在命令行下测试一下:

1
2
3
4
5
$ python3
>>> import pymongo
>>> pymongo.version
'3.4.0'
>>>

如果成功输出了其版本内容,那么证明成功安装。

Python

在Python 3中,如果想要将数据存储到MySQL中,就需要借助PyMySQL来操作,本节中我们介绍一下它的安装方式。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install pymysql

执行完命令后即可完成安装。

3. 验证安装

为了验证库是否已经安装成功,可以在命令行下测试一下。这里首先输入python3,进入命令行模式,接着输入如下内容:

1
2
3
4
5
$ python3
>>> import pymysql
>>> pymysql.VERSION
(0, 7, 11, None)
>>>

如果成功输出了其版本内容,那么证明PyMySQL成功安装。

Python

1.4节中,我们介绍了几个数据库的安装方式,但这仅仅是用来存储数据的数据库,它们提供了存储服务,但如果想要和Python交互的话,还需要安装一些Python存储库,如MySQL需要安装PyMySQL,MongoDB需要安装PyMongo等。本节中,我们来说明一下这些存储库的安装方式。

Python

Redis 是一个基于内存的高效的非关系型数据库,本节中我们来了解一下它在各个平台的安装过程。

1. 相关链接

2. Windows 下的安装

在 Windows 下,Redis 可以直接到 GitHub 的发行版本里面下载,具体下载地址是https://github.com/MSOpenTech/redis/releases

打开下载页面后,会发现有许多发行版本及其安装包,如图 1-39 所示。

图 1-39 下载页面

可以下载 Redis-x64-3.2.100.msi 安装即可。

安装过程比较简单,直接点击 Next 按钮安装即可。安装完成后,Redis 便会启动。

在系统服务页面里,可以观察到多了一个正在运行到 Redis 服务,如图 1-40 所示。

图 1-40 系统服务页面

另外,推荐下载 Redis Desktop Manager 可视化管理工具,来管理 Redis。这既可以到官方网站(链接为:https://redisdesktop.com/download)下载,也可以到 GitHub(链接为:https://github.com/uglide/RedisDesktopManager/releases)下载最新发行版本。

安装后,直接连接本地 Redis 即可。

3. Linux 下的安装

这里依然分为两类平台来介绍。

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 系统下,使用apt-get命令安装 Redis:

1
sudo apt-get -y install redis-server

然后输入redis-cli进入 Redis 命令行模式:

1
2
3
4
5
$ redis-cli
127.0.0.1:6379> set 'name' 'Germey'
OK
127.0.0.1:6379> get 'name'
"Germey"

这样就证明 Redis 成功安装了,但是现在 Redis 还是无法远程连接的,依然需要修改配置文件,配置文件的路径为/etc/redis/redis.conf。

首先,注释这一行:

1
bind 127.0.0.1

另外,推荐给 Redis 设置密码,取消注释这一行:

1
requirepass foobared

foobared即当前密码,可以自行修改。

然后重启 Redis 服务,使用的命令如下:

1
sudo /etc/init.d/redis-server restart

现在就可以使用密码远程连接 Redis 了。

另外,停止和启动 Redis 服务的命令分别如下:

1
2
sudo /etc/init.d/redis-server stop
sudo /etc/init.d/redis-server start

CentOS 和 Red Hat

在 CentOS 和 Red Hat 系统中,首先添加 EPEL 仓库,然后更新 yum 源:

1
2
sudo yum install epel-release
sudo yum update

然后安装 Redis 数据库:

1
sudo yum -y install redis

安装好后启动 Redis 服务即可:

1
sudo systemctl start redis

这里同样可以使用redis-cli进入 Redis 命令行模式操作。

另外,为了可以使 Redis 能被远程连接,需要修改配置文件,路径为/etc/redis.conf。

参见上文来修改配置文件实现远程连接和密码配置。

修改完成之后保存。

然后重启 Redis 服务即可,命令如下:

1
sudo systemctl restart redis

4. Mac 下的安装

这里推荐使用 Homebrew 安装,直接执行如下命令即可:

1
brew install redis

启动 Redis 服务的命令如下:

1
2
brew services start redis
redis-server /usr/local/etc/redis.conf

这里同样可以使用redis-cli进入 Redis 命令行模式。

在 Mac 下 Redis 的配置文件路径是/usr/local/etc/redis.conf,可以通过修改它来配置访问密码。

修改配置文件后,需要重启 Redis 服务。停止和重启 Redis 服务的命令分别如下:

1
2
brew services stop redis
brew services restart redis

另外,在 Mac 下也可以安装 Redis Desktop Manager 可视化管理工具来管理 Redis。

Python

更新 2020/3/8

MongoDB 现在已经出到了 4.x 版本,下面的安装教程是基于 3.x 版本,可能已经过期。

关于 4.x 的安装教程,可以参考如下内容:


以下为原文:

MongoDB 是由 C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 JSON 对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。

MongoDB 支持多种平台,包括 Windows、Linux、Mac OS、Solaris 等,在其官方网站(https://www.mongodb.com/download-center)均可找到对应的安装包。

本节中,我们来看下它的安装过程。

1. 相关链接

2. Windows 下的安装

这里直接在官网(如图 1-29 所示)点击 DOWNLOAD 按钮下载 msi 安装包即可。

图 1-29 MongoDB 官网

下载完成后,双击它开始安装,指定 MongoDB 的安装路径,例如此处我指定的安装路径为 C:\MongoDB\Server\3.4,如图 1-30 所示。当然,这里也可以自行选择路径。

图 1-30 指定安装路径

点击 Next 按钮执行安装即可。

安装成功之后,进入 MongoDB 的安装目录,此处是 C:\MongoDB\Server\3.4,在 bin 目录下新建同级目录 data,如图 1-31 所示。

图 1-31 新建 data 目录

然后进入 data 文件夹,新建子文件夹 db 来存储数据目录,如图 1-32 所示。

图 1-32 新建 db 目录

之后打开命令行,进入 MongoDB 安装目录的 bin 目录下,运行 MongoDB 服务:

1
mongod --dbpath "C:\MongoDB\Server\3.4\data\db"

请记得将此处的路径替换成你的主机 MongoDB 安装路径。

运行之后,会出现一些输出信息,如图 1-33 所示。

图 1-33 运行结果

这样我们就启动 MongoDB 服务了。

但是如果我们想一直使用 MongoDB,就不能关闭此命令行了。如果意外关闭或重启,MongoDB 服务就不能使用了。这显然不是我们想要的。所以,接下来还需将 MongoDB 配置成系统服务。

首先,以管理员模式运行命令行。注意,此处一定要以管理员身份运行,否则可能配置失败,如图 1-34 所示。

图 1-34 以管理员身份运行

在“开始”菜单中搜索 cmd,找到命令行,然后右击它以管理员身份运行即可。

随后新建一个日志文件,在 bin 目录新建 logs 同级目录,进入之后新建一个 mongodb.log 文件,用于保存 MongoDB 的运行日志,如图 1-35 所示。

图 1-35 新建 mongodb.log 文件

在命令行下输入如下内容:

1
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

这里的意思是绑定 IP 为 0.0.0.0(即任意 IP 均可访问),指定日志路径、数据库路径和端口,指定服务名称。需要注意的是,这里依然需要把路径替换成你的 MongoDB 安装路径,运行此命令后即可安装服务,运行结果如图 1-36 所示。图 1-36 运行结果

如果没有出现错误提示,则证明 MongoDB 服务已经安装成功。

可以在服务管理页面查看到系统服务,如图 1-37 所示。

图 1-37 系统服务页面

然后就可以设置它的开机启动方式了,如自动启动或手动启动等,这样我们就可以非常方便地管理 MongoDB 服务了。

启动服务后,在命令行下就可以利用mongo命令进入 MongoDB 命令交互环境了,如图 1-38 所示。

图 1-38 命令行模式

这样,Windows 下的 MongoDB 配置就完成了。

3. Linux 下的安装

这里以 MongoDB 3.4 为例说明 MongoDB 的安装过程。

Ubuntu

首先,导入 MongoDB 的 GPG key:

1
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

随后创建 apt-get 源列表,各个系统版本对应的命令分别如下。

  • Ubuntu 12.04 对应的命令如下:

    1
    echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  • Ubuntu 14.04 对应的命令如下:

    1
    echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  • Ubuntu 16.04 对应的命令如下:

    1
    echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

随后更新 apt-get 源:

1
sudo apt-get update

之后安装 MongoDB 即可:

1
sudo apt-get install -y mongodb-org

安装完成后运行 MongoDB,命令如下:

1
mongod --port 27017 --dbpath /data/db

运行命令之后,MongoDB 就在 27017 端口上运行了,数据文件会保存在/data/db 路径下。

一般情况下,我们在 Linux 上配置 MongoDB 都是为了远程连接使用的,所以这里还需要配置一下 MongoDB 的远程连接以及用户名和密码。

接着,进入 MongoDB 命令行:

1
mongo --port 27017

现在我们就已经进入到 MongoDB 的命令行交互模式下了,在此模式下运行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
> use admin
switched to db admin
> db.createUser({user: 'admin', pwd: 'admin123', roles: [{role: 'root', db: 'admin'}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

这样我们就创建了一个用户名为 admin,密码为 admin123 的用户,赋予最高权限。

随后需要修改 MongoDB 的配置文件,此时执行如下命令:

1
sudo vi /etc/mongod.conf

然后修改net部分为:

1
2
3
net:
port: 27017
bindIp: 0.0.0.0

这样配置后,MongoDB 可被远程访问。

另外,还需要添加如下的权限认证配置,此时直接添加如下内容到配置文件即可:

1
2
security:
authorization: enabled

配置完成之后,我们需要重新启动 MongoDB 服务,命令如下:

1
sudo service mongod restart

这样远程连接和权限认证就配置完成了。

CentOS 和 Red Hat

首先,添加 MongoDB 源:

1
sudo vi /etc/yum.repos.d/mongodb-org.repo

接着修改如下内容并保存:

1
2
3
4
5
6
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

然后执行yum命令安装:

1
sudo yum install mongodb-org

这里启动 MongoDB 服务的命令如下:

1
sudo systemctl start mongod

停止和重新加载 MongoDB 服务的命令如下:

1
2
sudo systemctl stop mongod
sudo systemctl reload mongod

有关远程连接和认证配置,可以参考前面,方式是相同的。

更多 Linux 发行版的 MongoDB 安装方式可以参考官方文档:https://docs.mongodb.com/manual/administration/install-on-linux/

4. Mac 下的安装

这里推荐使用 Homebrew 安装,直接执行brew命令即可:

1
brew install mongodb

然后创建一个新文件夹/data/db,用于存放 MongoDB 数据。

这里启动 MongoDB 服务的命令如下:

1
2
brew services start mongodb
sudo mongod

停止和重启 MongoDB 服务的命令分别是:

1
2
brew services stop mongodb
brew services restart mongodb

5. 可视化工具

这里推荐一个可视化工具 RoboMongo/Robo 3T,它使用简单,功能强大,官方网站为https://robomongo.org/,三大平台都支持,下载链接为https://robomongo.org/download

另外,还有一个简单易用的可视化工具——Studio 3T,它同样具有方便的图形化管理界面,官方网站为https://studio3t.com,同样支持三大平台,下载链接为https://studio3t.com/download/

Python

MySQL 是一个轻量级的关系型数据库,本节中我们来了解下它的安装方式。

1. 相关链接

2. Windows 下的安装

对于 Windows 来说,可以直接在百度软件中心搜索 MySQL,下载其提供的 MySQL 安装包,速度还是比较快的。

当然,最安全稳妥的方式是直接到官网下载安装包进行安装,但是这样做有个缺点,那就是需要登录才可以下载,而且速度不快。

下载完成后,双击安装包即可安装,这里直接选择默认选项,点击 Next 按钮安装即可。这里需要记住图 1-27 所设置的密码。

图 1-27 设置密码页面

安装完成后,我们可以在“计算机”→“管理”→“服务”页面开启和关闭 MySQL 服务,如图 1-28 所示。

图 1-28 系统服务页面

如果启动了 MySQL 服务,就可以使用它来存储数据了。

3. Linux 下的安装

下面我们仍然分平台来介绍。

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 系统中,我们直接使用apt-get命令即可安装 MySQL:

1
2
sudo apt-get update
sudo apt-get install -y mysql-server mysql-client

在安装过程中,会提示输入用户名和密码,输入后等待片刻即可完成安装。

启动、关闭和重启 MySQL 服务的命令如下:

1
2
3
sudo service mysql start
sudo service mysql stop
sudo service mysql restart

CentOS 和 Red Hat

这里以 MySQL 5.6 的 Yum 源为例来说明(如果需要更高版本,可以另寻),安装命令如下:

1
2
3
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql mysql-server

运行如上命令即可完成安装,初始密码为空。接下来,需要启动 MySQL 服务。

启动 MySQL 服务的命令如下:

1
sudo systemctl start mysqld

停止、重启 MySQL 服务的命令如下:

1
2
sudo systemctl stop mysqld
sudo systemctl restart mysqld

上面我们完成了 Linux 下 MySQL 的安装,之后可以修改密码,此时可以执行如下命令:

1
mysql -uroot -p

输入密码后,进入 MySQL 命令行模式,接着输入如下命令:

1
2
3
use mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
FLUSH PRIVILEGES;

其中newpass为修改的新的 MySQL 密码,请自行替换。

由于 Linux 一般会作为服务器使用,为了使 MySQL 可以被远程访问,我们需要修改 MySQL 的配置文件,配置文件的路径一般为/etc/mysql/my.cnf。

比如,使用vi进行修改的命令如下:

1
vi /etc/mysql/my.cnf

取消此行的注释如下:

1
bind-address = 127.0.0.1

此行限制了 MySQL 只能本地访问而不能远程访问,取消注释即可解除此限制。

修改完成后重启 MySQL 服务,此时 MySQL 就可以被远程访问了。

到此为止,在 Linux 下安装 MySQL 的过程就结束了。

4. Mac 下的安装

这里推荐使用 Homebrew 安装,直接执行brew命令即可:

1
brew install mysql

启动、停止和重启 MySQL 服务的命令如下:

1
2
3
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart

Mac 一般不会作为服务器使用,如果想取消本地 host 绑定,那么需要修改 my.cnf 文件,然后重启服务。

Python

作为数据存储的重要部分,数据库同样是必不可少的,数据库可以分为关系型数据库和非关系型数据库。

关系型数据库如SQLite、MySQL、Oracle、SQL Server、DB2等,其数据库是以表的形式存储,非关系型数据库如MongoDB、Redis,它们的存储形式是键值对,存储形式更加灵活。

本书用到的数据库主要有关系型数据库MySQL及非关系型数据库MongoDB、Redis。

本节中,我们来了解一下它们的安装方式。

Python

在爬虫过程中,难免会遇到各种各样的验证码,而大多数验证码还是图形验证码,这时候我们可以直接用 OCR 来识别。

1. OCR

OCR,即 Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。

例如,对于如图 1-22 和图 1-23 所示的验证码,我们可以使用 OCR 技术来将其转化为电子文本,然后爬虫将识别结果提交给服务器,便可以达到自动识别验证码的过程。

图 1-22 验证码

图 1-23 验证码

tesserocr 是 Python 的一个 OCR 识别库,但其实是对 tesseract 做的一层 Python API 封装,所以它的核心是 tesseract。因此,在安装 tesserocr 之前,我们需要先安装 tesseract。

2. 相关链接

3. Windows 下的安装

在 Windows 下,首先需要下载 tesseract,它为 tesserocr 提供了支持。

进入下载页面,可以看到有各种.exe 文件的下载列表,这里可以选择下载 3.0 版本。图 1-24 所示为 3.05 版本。

图 1-24 下载页面

其中文件名中带有 dev 的为开发版本,不带 dev 的为稳定版本,可以选择下载不带 dev 的版本,例如可以选择下载 tesseract-ocr-setup-3.05.01.exe。

下载完成后双击,此时会出现如图 1-25 所示的页面。

图 1-25 安装页面

此时可以勾选 Additional language data(download)选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言。然后一路点击 Next 按钮即可。

接下来,再安装 tesserocr 即可,此时直接使用 pip 安装:

1
pip3 install tesserocr pillow

4. Linux 下的安装

对于 Linux 来说,不同系统已经有了不同的发行包了,它可能叫作 tesseract-ocr 或者 tesseract,直接用对应的命令安装即可。

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 系统下,安装命令如下:

1
sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev

CentOS、Red Hat

在 CentOS 和 Red Hat 系统下,安装命令如下:

1
yum install -y tesseract

在不同发行版本运行如上命令,即可完成 tesseract 的安装。

安装完成后,便可以调用tesseract命令了。

接着,我们查看一下其支持的语言:

1
tesseract --list-langs

运行结果示例:

1
2
3
4
List of available languages (3):
eng
osd
equ

结果显示它只支持几种语言,如果想要安装多国语言,还需要安装语言包,官方叫作 tessdata(其下载链接为:https://github.com/tesseract-ocr/tessdata)。

利用 Git 命令将其下载下来并迁移到相关目录即可,不同版本的迁移命令如下所示。

在 Ubuntu、Debian 和 Deepin 系统下的迁移命令如下:

1
2
git clone https://github.com/tesseract-ocr/tessdata.git
sudo mv tessdata/* /usr/share/tesseract-ocr/tessdata

在 CentOS 和 Red Hat 系统下的迁移命令如下:

1
2
git clone https://github.com/tesseract-ocr/tessdata.git
sudo mv tessdata/* /usr/share/tesseract/tessdata

这样就可以将下载下来的语言包全部安装了。

这时我们重新运行列出所有语言的命令:

1
tesseract --list-langs

结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
List of available languages (107):
afr
amh
ara
asm
aze
aze_cyrl
bel
ben
bod
bos
bul
cat
ceb
ces
chi_sim
chi_tra
...

可以发现,这里列出的语言就多了很多,比如 chi_sim 就代表简体中文,这就证明语言包安装成功了。

接下来再安装 tesserocr 即可,这里直接使用 pip 安装:

1
pip3 install tesserocr pillow

5. Mac 下的安装

在 Mac 下,我们首先使用 Homebrew 安装 ImageMagick 和 tesseract 库:

1
2
brew install imagemagick
brew install tesseract --all-languages

接下来再安装 tesserocr 即可:

1
pip3 install tesserocr pillow

这样我们便完成了 tesserocr 的安装。

6. 验证安装

接下来,我们可以使用 tesseract 和 tesserocr 来分别进行测试。

下面我们以如图 1-26 所示的图片为样例进行测试。

图 1-26 测试样例

该图片的链接为https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载。

首先用命令行进行测试,将图片下载下来并保存为 image.png,然后用tesseract命令测试:

1
tesseract image.png result -l eng && cat result.txt

运行结果如下:

1
2
Tesseract Open Source OCR Engine v3.05.01 with Leptonica
Python3WebSpider

这里我们调用了tesseract命令,其中第一个参数为图片名称,第二个参数result为结果保存的目标文件名称,\-l指定使用的语言包,在此使用英文(eng)。然后,再用cat命令将结果输出。

运行结果便是图片的识别结果:Python3WebSpider。可以看到,这时已经成功将图片文字转为电子文本了。

然后还可以利用 Python 代码来测试,这里就需要借助于 tesserocr 库了,测试代码如下:

1
2
3
4
import tesserocr
from PIL import Image
image = Image.open('image.png')
print(tesserocr.image_to_text(image))

我们首先利用Image读取了图片文件,然后调用了tesserocrimage_to_text()方法,再将其识别结果输出。

运行结果如下:

1
Python3WebSpider

另外,我们还可以直接调用file_to_text()方法,这可以达到同样的效果:

1
2
import tesserocr
print(tesserocr.file_to_text('image.png'))

运行结果:

1
Python3WebSpider

如果成功输出结果,则证明 tesseract 和 tesserocr 都已经安装成功。

Python

pyquery同样是一个强大的网页解析工具,它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便。本节中,我们就来了解一下它的安装方式。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install pyquery

命令执行完毕之后即可完成安装。

3. wheel安装

当然,我们也可以到PyPI(https://pypi.python.org/pypi/pyquery/#downloads)下载对应的wheel文件安装。比如如果当前版本为1.2.17,则下载的文件名称为pyquery-1.2.17-py2.py3-none-any.whl,此时下载到本地再进行pip安装即可,命令如下:

1
pip3 install pyquery-1.2.17-py2.py3-none-any.whl

4. 验证安装

安装完成之后,可以在Python命令行下测试:

1
2
$ python3
>>> import pyquery

如果没有错误报出,则证明库已经安装好了。

Python

Beautiful Soup是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据。它拥有强大的API和多样的解析方式,本节就来了解下它的安装方式。

1. 相关链接

2. 准备工作

Beautiful Soup的HTML和XML解析器是依赖于lxml库的,所以在此之前请确保已经成功安装好了lxml库,具体的安装方式参见上节。

3. pip安装

目前,Beautiful Soup的最新版本是4.x版本,之前的版本已经停止开发了。这里推荐使用pip来安装,安装命令如下:

1
pip3 install beautifulsoup4

命令执行完毕之后即可完成安装。

4. wheel安装

当然,我们也可以从PyPI下载wheel文件安装,链接如下:https://pypi.python.org/pypi/beautifulsoup4

然后使用pip安装wheel文件即可。

5. 验证安装

安装完成之后,可以运行下面的代码验证一下:

1
2
3
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>Hello</p>', 'lxml')
print(soup.p.string)

运行结果如下:

1
Hello

如果运行结果一致,则证明安装成功。

注意,这里我们虽然安装的是beautifulsoup4这个包,但是在引入的时候却是bs4。这是因为这个包源代码本身的库文件夹名称就是bs4,所以安装完成之后,这个库文件夹就被移入到本机Python3的lib库里,所以识别到的库文件名就叫作bs4。

因此,包本身的名称和我们使用时导入的包的名称并不一定是一致的。

Python

lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。本节中,我们了解一下lxml的安装方式,这主要从Windows、Linux和Mac三大平台来介绍。

1. 相关链接

2. Windows下的安装

在Windows下,可以先尝试利用pip安装,此时直接执行如下命令即可:

1
pip3 install lxml

如果没有任何报错,则证明安装成功。

如果出现报错,比如提示缺少libxml2库等信息,可以采用wheel方式安装。

推荐直接到这里(链接为:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml)下载对应的wheel文件,找到本地安装Python版本和系统对应的lxml版本,例如Windows 64位、Python 3.6,就选择lxml‑3.8.0‑cp36‑cp36m‑win_amd64.whl,将其下载到本地。

然后利用pip安装即可,命令如下:

1
pip3 install lxml‑3.8.0cp36cp36mwin_amd64.whl

这样我们就可以成功安装lxml了。

3. Linux下的安装

在Linux平台下安装问题不大,同样可以先尝试pip安装,命令如下:

1
pip3 install lxml

如果报错,可以尝试下面的解决方案。

CentOS、Red Hat

对于此类系统,报错主要是因为缺少必要的库。

执行如下命令安装所需的库即可:

1
2
sudo yum groupinstall -y development tools
sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel

主要是libxslt-devel和libxml2-devel这两个库,lxml依赖它们。安装好之后,重新尝试pip安装即可。

Ubuntu、Debian和Deepin

在这些系统下,报错的原因同样可能是缺少了必要的类库,执行如下命令安装:

1
sudo apt-get install -y python3-dev build-essential libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

安装好之后,重新尝试pip安装即可。

4. Mac下的安装

在Mac平台下,仍然可以首先尝试pip安装,命令如下:

1
pip3 install lxml

如果产生错误,可以执行如下命令将必要的类库安装:

1
xcode-select --install

之后再重新尝试pip安装,就没有问题了。

lxml是一个非常重要的库,后面的Beautiful Soup、Scrapy框架都需要用到此库,所以请一定安装成功。

5. 验证安装

安装完成之后,可以在Python命令行下测试:

1
2
$ python3
>>> import lxml

如果没有错误报出,则证明库已经安装好了。

Python

抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如lxml、Beautiful Soup、pyquery等。此外,还提供了非常强大的解析方法,如XPath解析和CSS选择器解析等,利用它们,我们可以高效便捷地从网页中提取有效信息。

本节中,我们就来介绍一下这些库的安装过程。

Python

之前介绍的Requests库是一个阻塞式HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费资源。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。

aiohttp就是这样一个提供异步Web服务的库,从Python 3.5版本开始,Python中加入了async/await关键字,使得回调的写法更加直观和人性化。aiohttp的异步操作借助于async/await关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率,下面我们来看一下这个库的安装方法。

1. 相关链接

2. pip安装

这里推荐使用pip安装,命令如下:

1
pip3 install aiohttp

另外,官方还推荐安装如下两个库:一个是字符编码检测库cchardet,另一个是加速DNS的解析库aiodns。安装命令如下:

1
pip3 install cchardet aiodns

3. 测试安装

安装完成之后,可以在Python命令行下测试:

1
2
$ python3
>>> import aiohttp

如果没有错误报出,则证明库已经安装好了。

4. 结语

我们会在后面的实例中用到这个库,比如维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大地提升效率。

Python

PhantomJS 是一个无界面的、可脚本编程的 WebKit 浏览器引擎,它原生支持多种 Web 标准:DOM 操作、CSS 选择器、JSON、Canvas 以及 SVG。

Selenium 支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了。而且 PhantomJS 的运行效率也很高,还支持各种参数配置,使用非常方便。下面我们就来了解一下 PhantomJS 的安装过程。

1. 相关链接

2. 下载 PhantomJS

我们需要在官方网站下载对应的安装包,PhantomJS 支持多种操作系统,比如 Windows、Linux、Mac、FreeBSD 等,我们可以选择对应的平台并将安装包下载下来。

下载完成后,将 PhantomJS 可执行文件所在的路径配置到环境变量里。比如在 Windows 下,将下载的文件解压之后并打开,会看到一个 bin 文件夹,里面包括一个可执行文件 phantomjs.exe,我们需要将它直接放在配置好环境变量的路径下或者将它所在的路径配置到环境变量里。比如,我们既可以将它直接复制到 Python 的 Scripts 文件夹,也可以将它所在的 bin 目录加入到环境变量。

Windows 下环境变量的配置可以参见 1.1 节,Linux 及 Mac 环境变量的配置可以参见 1.2.3 节,在此不再赘述,关键在于将 PhantomJS 的可执行文件所在路径配置到环境变量里。

配置成功后,可以在命令行下测试一下,输入:

1
phantomjs

如果可以进入到 PhantomJS 的命令行,那就证明配置完成了,如图 1-21 所示。

图 1-21 控制台

3. 验证安装

在 Selenium 中使用的话,我们只需要将 Chrome 切换为 PhantomJS 即可:

1
2
3
4
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)

运行之后,我们就不会发现有浏览器弹出了,但实际上 PhantomJS 已经运行起来了。这里我们访问了百度,然后将当前的 URL 打印出来。

控制台的输出如下:

1
https://www.baidu.com/

如此一来,我们便完成了 PhantomJS 的配置,后面可以利用它来完成一些页面的抓取。

这里我们介绍了 Selenium 对应的三大主流浏览器的对接方式,后面我们会对 Selenium 及各个浏览器的对接方法进行更加深入的探究。

Python

上一节中,我们了解了 ChromeDriver 的配置方法,配置完成之后便可以用 Selenium 驱动 Chrome 浏览器来做相应网页的抓取。

那么对于 Firefox 来说,也可以使用同样的方式完成 Selenium 的对接,这时需要安装另一个驱动 GeckoDriver。

本节中,我们来介绍一下 GeckoDriver 的安装过程。

1. 相关链接

2. 准备工作

在这之前请确保已经正确安装好了 Firefox 浏览器并可以正常运行,安装过程不再赘述。

3. 下载 GeckoDriver

我们可以在 GitHub 上找到 GeckoDriver 的发行版本,当前最新版本为 0.18,下载页面如图 1-18 所示。图 1-18 GeckoDriver 下载页面

这里可以在不同的平台上下载,如 Windows、Mac、Linux、ARM 等平台,我们可以根据自己的系统和位数选择对应的驱动下载,若是 Windows 64 位,就下载 geckodriver-v0.18.0-win64.zip。

4. 环境变量配置

在 Windows 下,可以直接将 geckodriver.exe 文件拖到 Python 的 Scripts 目录下,如图 1-19 所示。

图 1-19 将 geckodriver.exe 文件拖到 Python Scripts 目录

此外,也可以单独将其所在路径配置到环境变量,具体的配置方法请参 1.1 节。

在 Linux 和 Mac 下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里。

例如,要移动文件到/usr/bin 目录。首先在命令行模式下进入其所在路径,然后将其移动到/usr/bin:

1
sudo mv geckodriver /usr/bin

当然,也可以将 GeckoDriver 配置到$PATH。首先,可以将可执行文件放到某一目录,目录可以任意选择,例如将当前可执行文件放在/usr/local/geckodriver 目录下。接下来可以修改~/.profile 文件,命令如下:

1
vi ~/.profile

然后添加如下一句配置:

1
export PATH="$PATH:/usr/local/geckodriver"

保存后执行如下命令即可完成配置:

1
source ~/.profile

5. 验证安装

配置完成后,就可以在命令行下直接执行geckodriver命令测试:

1
geckodriver

这时如果控制台有类似图 1-20 所示的输出,则证明 GeckoDriver 的环境变量配置好了。

图 1-20 控制台输出

随后执行如下 Python 代码,在程序中测试一下:

1
2
from selenium import webdriver
browser = webdriver.Firefox()

运行之后,若弹出一个空白的 Firefox 浏览器,则证明所有的配置都没有问题;如果没有弹出,请检查之前的每一步配置。

如果没有问题,接下来就可以利用 Firefox 配合 Selenium 来做网页抓取了。

6. 结语

现在我们就可以使用 Chrome 或 Firefox 进行网页抓取了,但是这样可能有个不方便之处:因为程序运行过程中需要一直开着浏览器,在爬取网页的过程中浏览器可能一直动来动去。目前最新的 Chrome 浏览器版本已经支持无界面模式了,但如果版本较旧的话,就不支持。所以这里还有另一种选择,那就是安装一个无界面浏览器 PhantomJS,此时抓取过程会在后台运行,不会再有窗口出现。在下一节中,我们就来了解一下 PhantomJS 的相关安装方法。

Python

前面我们成功安装好了 Selenium 库,但是它是一个自动化测试工具,需要浏览器来配合使用,本节中我们就介绍一下 Chrome 浏览器及 ChromeDriver 驱动的配置。

首先,下载 Chrome 浏览器,方法有很多,在此不再赘述。

随后安装 ChromeDriver。因为只有安装 ChromeDriver,才能驱动 Chrome 浏览器完成相应的操作。下面我们来介绍下怎样安装 ChromeDriver。

1. 相关链接

2. 准备工作

在这之前请确保已经正确安装好了 Chrome 浏览器并可以正常运行,安装过程不再赘述。

3. 查看版本

点击 Chrome 菜单“帮助”→“关于 Google Chrome”,即可查看 Chrome 的版本号,如图 1-14 所示。

图 1-14 Chrome 版本号

这里我的 Chrome 版本是 58.0。

请记住 Chrome 版本号,因为选择 ChromeDriver 版本时需要用到。

4. 下载 ChromeDriver

打开 ChromeDriver 的官方网站,可以看到最新版本为 2.31,其支持的 Chrome 浏览器版本为 58~60,官网页面如图 1-15 所示。

更新:现在 2020 年,Chrome 版本已经更新到 80+,请以最新的 ChromeDriver 为准!https://chromedriver.chromium.org/downloads

图 1-15 官网页面

如果你的 Chrome 版本号是 58~60,那么可以选择此版本下载。

如果你的 Chrome 版本号不在此范围,可以继续查看之前的 ChromeDriver 版本。每个版本都有相应的支持 Chrome 版本的介绍,请找好自己的 Chrome 浏览器版本对应的 ChromeDriver 版本再下载,否则可能无法正常工作。

找好对应的版本号后,随后到 ChromeDriver 镜像站下载对应的安装包即可:https://chromedriver.storage.googleapis.com/index.html。在不同平台下,可以下载不同的安装包。

5. 环境变量配置

下载完成后,将 ChromeDriver 的可执行文件配置到环境变量下。

在 Windows 下,建议直接将 chromedriver.exe 文件拖到 Python 的 Scripts 目录下,如图 1-16 所示。

图 1-16 Python Scripts 目录

此外,也可以单独将其所在路径配置到环境变量,具体的配置方法请参见 1.1 节。

在 Linux 和 Mac 下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里。

例如,要移动文件到/usr/bin 目录。首先,需要在命令行模式下进入其所在路径,然后将其移动到/usr/bin:

1
sudo mv chromedriver /usr/bin

当然,也可以将 ChromeDriver 配置到$PATH。首先,可以将可执行文件放到某一目录,目录可以任意选择,例如将当前可执行文件放在/usr/local/chromedriver 目录下,接下来可以修改~/.profile 文件,相关命令如下:

1
export PATH="$PATH:/usr/local/chromedriver"

保存后执行如下命令:

1
source ~/.profile

即可完成环境变量的添加。

6. 验证安装

配置完成后,就可以在命令行下直接执行chromedriver命令了:

1
chromedriver

如果输入控制台有类似图 1-17 所示的输出,则证明 ChromeDriver 的环境变量配置好了。

图 1-17 控制台输出

随后再在程序中测试,执行如下 Python 代码:

1
2
from selenium import webdriver
browser = webdriver.Chrome()

运行之后,如果弹出一个空白的 Chrome 浏览器,则证明所有的配置都没有问题。如果没有弹出,请检查之前的每一步配置。

如果弹出后闪退,则可能是 ChromeDriver 版本和 Chrome 版本不兼容,请更换 ChromeDriver 版本。

如果没有问题,接下来就可以利用 Chrome 来做网页抓取了。

Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些JavaScript渲染的页面来说,这种抓取方式非常有效。下面我们来看看Selenium的安装过程。

1. 相关链接

2. pip安装

这里推荐直接使用pip安装,执行如下命令即可:

1
pip3 install selenium

3. wheel安装

此外,也可以到PyPI下载对应的wheel文件进行安装(下载地址:https://pypi.python.org/pypi/selenium/#downloads),如最新版本为3.4.3,则下载selenium-3.4.3-py2.py3-none-any.whl即可。

然后进入wheel文件目录,使用pip安装:

1
pip3 install selenium-3.4.3-py2.py3-none-any.whl

4. 验证安装

进入Python命令行交互模式,导入Selenium包,如果没有报错,则证明安装成功:

1
2
$ python3
>>> import selenium

但这样做还不够,因为我们还需要用浏览器(如Chrome、Firefox等)来配合Selenium工作。

后面我们会介绍Chrome、Firefox、PhantomJS三种浏览器的配置方式。有了浏览器,我们才可以配合Selenium进行页面的抓取。

Python

由于Requests属于第三方库,也就是Python默认不会自带这个库,所以需要我们手动安装。下面我们首先看一下它的安装过程。

1. 相关链接

2. pip安装

无论是Windows、Linux还是Mac,都可以通过pip这个包管理工具来安装。

在命令行界面中运行如下命令,即可完成Requests库的安装:

1
pip3 install requests

这是最简单的安装方式,推荐使用这种方法安装。

3. wheel安装

wheel是Python的一种安装包,其后缀为.whl,在网速较差的情况下可以选择下载wheel文件再安装,然后直接用pip3命令加文件名安装即可。

不过在这之前需要先安装wheel库,安装命令如下:

1
pip3 install wheel

然后到PyPI上下载对应的wheel文件,如最新版本为2.17.3,则打开https://pypi.python.org/pypi/requests/2.17.3#downloads,下载requests-2.17.3-py2.py3-none-any.whl到本地。

随后在命令行界面进入wheel文件目录,利用pip安装即可:

1
pip3 install requests-2.17.3-py2.py3-none-any.whl

这样我们也可以完成Requests的安装。

4. 源码安装

如果你不想用pip来安装,或者想获取某一特定版本,可以选择下载源码安装。

此种方式需要先找到此库的源码地址,然后下载下来再用命令安装。

Requests项目的地址是:https://github.com/kennethreitz/requests

可以通过Git来下载源代码:

1
git clone git://github.com/kennethreitz/requests.git

或通过curl下载:

1
curl -OL https://github.com/kennethreitz/requests/tarball/master

下载下来之后,进入目录,执行如下命令即可安装:

1
2
cd requests
python3 setup.py install

命令执行结束后即可完成Requests的安装。由于这种安装方式比较烦琐,后面不再赘述。

5. 验证安装

为了验证库是否已经安装成功,可以在命令行模式测试一下:

1
2
$ python3
>>> import requests

首先输入python3,进入命令行模式,然后输入上述内容,如果什么错误提示也没有,就证明已经成功安装了Requests。

Python

爬虫可以简单分为几步:抓取页面、分析页面和存储数据。

在抓取页面的过程中,我们需要模拟浏览器向服务器发出请求,所以需要用到一些Python库来实现HTTP请求操作。在本书中,我们用到的第三方库有Requests、Selenium和aiohttp等。

在本节中,我们介绍一下这些请求库的安装方法。

Python

既然要用Python 3开发爬虫,那么第一步一定是安装Python 3。这里会介绍Windows、Linux和Mac三大平台下的安装过程。

1. 相关链接

2. Windows下的安装

在Windows下安装Python 3的方式有两种。

  • 一种是通过Anaconda安装,它提供了Python的科学计算环境,里面自带了Python以及常用的库。如果选用了这种方式,后面的环境配置方式会更加简便。
  • 另一种是直接下载安装包安装,即标准的安装方式。

下面我们依次介绍这两种安装方式,任选其一即可。

(1) Anaconda安装

Anaconda的官方下载链接为https://www.continuum.io/downloads,选择Python 3版本的安装包下载即可,如图1-1所示。

图像说明文字

图1-1 Anaconda Windows下载页面

如果下载速度过慢,可以选择使用清华大学镜像,下载列表链接为https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,使用说明链接为https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

下载完成之后,直接双击安装包安装即可。安装完成之后,Python 3的环境就配置好了。

(2) 安装包安装

我们推荐直接下载安装包来安装,此时可以直接到官方网站下载Python 3的安装包:https://www.python.org/downloads/

写书时,Python的最新版本1是3.6.2,其下载链接为https://www.python.org/downloads/release/python-362/,下载页面如图1-2所示。需要说明的是,实际的Python最新版本以官网为准。

图像说明文字

图1-2 Python下载页面

  1. 若无特别说明,书中的最新版本均为作者写书时的情况,后面不再一一说明。

64位系统可以下载Windows x86-64 executable installer,32位系统可以下载Windows x86 executable installer。

下载完成之后,直接双击Python安装包,然后通过图形界面安装,接着设置Python的安装路径,完成后将Python 3和Python 3的Scripts目录配置到环境变量即可。

关于环境变量的配置,此处以Windows 10系统为例进行演示。

假如安装后的Python 3路径为C:\Python36,从资源管理器中打开该路径,如图1-3所示。

图像说明文字

图1-3 Python安装目录

将该路径复制下来。

随后,右击“计算机”,从中选择“属性”,此时将打开系统属性窗口,如图1-4所示。

图像说明文字

图1-4 系统属性

点击左侧的“高级系统设置”,即可看到在弹出的对话框下方看到“环境变量”按钮,如图1-5所示。

图像说明文字

图1-5 高级系统设置

点击“环境变量”按钮,找到系统变量下的Path变量,随后点击“编辑”按钮,如图1-6所示。

图像说明文字

图1-6 环境变量

随后点击“新建”,新建一个条目,将刚才复制的C:\Python36复制进去。这里需要说明的是,此处的路径就是你的Python 3安装目录,请自行替换。然后,再把C:\Python36\Scripts路径复制进去,如图1-7所示。

图像说明文字

图1-7 编辑环境变量

最后,点击“确定”按钮即可完成环境变量的配置。

配置好环境变量后,我们就可以在命令行中直接执行环境变量路径下的可执行文件了,如pythonpip等命令。

(3) 添加别名

上面这两种安装方式任选其一即可完成安装,但如果之前安装过Python 2的话,可能会导致版本冲突问题,比如在命令行下输入python就不知道是调用的Python 2还是Python 3了。为了解决这个问题,建议将安装目录中的python.exe复制一份,命名为python3.exe,这样便可以调用python3命令了。实际上,它和python命令是完全一致的,这样只是为了可以更好地区分Python版本。当然,如果没有安装过Python 2的话,也建议添加此别名,添加完毕之后的效果如图1-8所示。

图像说明文字

图1-8 添加别名

对于pip来说,安装包中自带了pip3.exe可执行文件,我们也可以直接使用pip3命令,无需额外配置。

(4) 测试验证

安装完成后,可以通过命令行测试一下安装是否成功。在“开始”菜单中搜索cmd,找到命令提示符,此时就进入命令行模式了。输入python,测试一下能否成功调用Python。如果添加了别名的话,可以输入python3测试,这里输入的是python3,测试结果如图1-9所示。

图像说明文字

图1-9 测试验证页面

输出结果类似如下:

1
2
3
4
5
6
7
8
$ python3
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello World')
Hello World
>>> exit()
$ pip3 -V
pip 9.0.1 from c:\python36\lib\site-packages (python 3.6)

如果出现了类似上面的提示,则证明Python 3和pip 3均安装成功;如果提示命令不存在,那么请检查下环境变量的配置情况。

3. Linux下的安装

Linux下的安装方式有多种:命令安装、源码安装和Anaconda安装。

使用源码安装需要自行编译,时间较长。推荐使用系统自带的命令或Anaconda安装,简单、高效。这里分别讲解这3种安装方式。

(1) 命令行安装

不同的Linux发行版本的安装方式又有不同,在此分别予以介绍。

CentOS、Red Hat

如果是CentOS或Red Hat版本,则使用yum命令安装即可。

下面列出了Python 3.5和Python 3.4两个版本的安装方法,可以自行选择。

Python 3.5版本:

1
2
3
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum update
sudo yum install -y python35u python35u-libs python35u-devel python35u-pip

执行完毕后,便可以成功安装Python 3.5及pip 3了。

Python 3.4版本:

1
2
3
4
5
sudo yum groupinstall -y development tools
sudo yum install -y epel-release python34-devel libxslt-devel libxml2-devel openssl-devel
sudo yum install -y python34
sudo yum install -y python34-setuptools
sudo easy_install-3.4 pip

执行完毕后,便可以成功安装Python 3.4及pip 3了。

Ubuntu、Debian和Deepin

首先安装Python 3,这里使用apt-get安装即可。在安装前,还需安装一些基础库,相关命令如下:

1
2
sudo apt-get install -y python3-dev build-essential libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev libcurl4-openssl-dev
sudo apt-get install -y python3

执行完上述命令后,就可以成功安装Python 3了。

然后还需要安装pip 3,这里仍然使用apt-get安装即可,相关命令如下:

1
sudo apt-get install -y python3-pip

执行完毕后,便可以成功安装Python 3及pip 3了。

(2) 源码安装

如果命令行的安装方式有问题,还可以下载Python 3源码进行安装。

源码下载地址为https://www.python.org/ftp/python/,可以自行选用想要的版本进行安装。这里以Python 3.6.2为例进行说明,安装路径设置为/usr/local/python3。

首先,创建安装目录,相关命令如下:

1
sudo mkdir /usr/local/python3

随后下载安装包并解压进入,相关命令如下:

1
2
3
wget --no-check-certificate https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -xzvf Python-3.6.2.tgz
cd Python-3.6.2

接下来,编译安装。所需的时间可能较长,请耐心等待,命令如下:

1
2
3
sudo ./configure --prefix=/usr/local/python3
sudo make
sudo make install

安装完成之后,创建Python 3链接,相关命令如下:

1
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

随后下载pip安装包并安装,命令如下:

1
2
3
4
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz
tar -xzvf 9.0.1.tar.gz
cd pip-9.0.1
python3 setup.py install

安装完成后再创建pip 3链接,相关命令如下:

1
sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3

这样就成功安装好了Python 3及pip 3。

(3) Anaconda安装

Anaconda同样支持Linux,其官方下载链接为https://www.continuum.io/downloads,选择Python 3版本的安装包下载即可,如图1-10所示。

图像说明文字

图1-10 Anaconda Linux下载页面

如果下载速度过慢,同样可以使用清华镜像,具体可参考Windows部分的介绍,在此不再赘述。

(4) 测试验证

在命令行界面下测试Python 3和pip 3是否安装成功:

1
2
3
4
5
6
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

若出现类似上面的提示,则证明Python 3和pip 3安装成功。

4. Mac下的安装

在Mac下同样有多种安装方式,如Homebrew、安装包安装、Anaconda安装等,这里推荐使用Homebrew安装。

(1) Homebrew安装

Homebrew是Mac平台下强大的包管理工具,其官方网站是https://brew.sh/

执行如下命令,即可安装Homebrew:

1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完成后,便可以使用brew命令安装Python 3和pip 3了:

1
brew install python3

命令执行完成后,我们发现Python 3和pip 3均已成功安装。

(2) 安装包安装

可以到官方网站下载Python 3安装包。链接为https://www.python.org/downloads/,页面如图1-2所示。

在Mac平台下,可以选择下载Mac OS X 64-bit/32-bit installer,下载完成后,打开安装包按照提示安装即可。

(3) Anaconda安装

Anaconda同样支持Mac,其官方下载链接为:https://www.continuum.io/downloads,选择Python 3版本的安装包下载即可,如图1-11所示。

图像说明文字

图1-11 Anaconda Mac下载页面

如果下载速度过慢,同样可以使用清华镜像,具体可参考Windows部分的介绍,在此不再赘述。

(4) 测试验证

打开终端,在命令行界面中测试Python 3和pip 3是否成功安装,如图1-12所示。

图像说明文字

图1-12 测试验证页面

若出现上面的提示,则证明Python 3和pip 3安装成功。

本节中,我们介绍了3大平台Windows、Linux和Mac下Python 3的安装方式。安装完成后,我们便可以开启Python爬虫的征程了。

Python

工欲善其事,必先利其器!

编写和运行程序之前我们必须要先把开发环境配置好,只有配置好了环境并且有了更方便的开发工具我们才能更加高效地用程序实现相应的功能,然而很多情况下我们可能在最开始就卡在环境配置上,如果这个过程花费了太多时间,想必学习的兴趣就下降了大半,所以本章专门来对本书中所有的环境配置做一下说明。

本章是本书使用的所有库及工具的安装过程讲解,为了使书的条理更加清晰,本书将环境配置的过程统一合并为一章,本章不必逐节阅读,可以在需要的时候进行查阅。

文中在介绍安装过程的时候会尽量兼顾各个平台,另外会将一些安装常见的错误指出,以便快速高效地搭建好编程环境。