第一部分 开发环境配置

一、Python3的安装
安装包下载及相关文档介绍。相关连接如下。
官方网站:https://www.python.org/
下载地址:https://www.python.org/downloads
第三方库:https://pypi.python.org/pypi
官方文档:https://docs.python.org/3
中文教程:http://www.runoob.com/python3/python3-tutorial.html
AwesomePython: https://github.com/vinta/awesome-python
AwesomePython中文版:https://github.com/jobbole/awesome-python-cn

(一)、在Windows下安装Python3
一种是通过Anoconda安装,安装省事,提供了python的科学计算库,自带了常用库。
另一种方式是直接下载安装包安装,标准安装。

a、Anaconda安装
官方下载连接:https://www.anaconda.com/
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

b、安装包安装,到python官网下载安装包:https://www.python.org/
根据系统是32位还是64位,对应下载32位(x86)或者64位(x86-64)的软件安装。
安装完成后,将python解释器的路径添加到系统的环境变量中,这样可以在命令行执行python,pip等命令。

c、添加别名
如果系统中同时存在python2和python3,为了避免在命令行执行python时导致冲突问题,在python3的安装目录下复制一份python.exe文件为python3.exe。此时可以命令行下直接运行python3命令。另外pip程序默认也是pip3.exe,所以不需要复制。

d、测试验证
进入windows的命令行,输入python或者python3、pip3,测试是否安装成功。如果提示命令不存在,可检查下环境变量设置。
python3
exit()
pip3 -V

(二)、Linux下的安装
安装过程省略。

二、请求库的安装
爬虫分为简单几步:抓取页面、分析页面和存储数据。
在抓取页面的过程中,要模拟浏览器向服务器发出请求,需要用到一些Python库来实
现HTTP请求操作。常用的第三方库有requests、Selenium和aiohttp即等。

(一)、requests的安装
requests属于第三方库,Python默认不自动安装。需要手动安装。
1、相关连接
GitHub: https://github.com/requests/requests
PyPI: https://pypi.python.org/pypi/requests
官方文档:http://www.python-requests.org
中文文档:http://docs.python-requests.org/zh_CN/latest

2、pip安装
windows、linux、mac都可以用pip包管理工具安装。在命令行执行下面命令就可以完成安装。
pip3 install requests

3、wheel安装
wheel是Python的一种安装包,后缀是.whl主文件。要采用这种方式安装,要先安装wheel库:
pip3 install wheel
接下来找到相应的requests的wheel文件下载到本地进行安装。在前面提到的PyPI网站查找。下载到本地,进入wheel文件所在目录的命令行下,执行命令安装
pip3 install requests.whl #假设是requests.whl文件

4、源码安装
不用pip安装,可以下载源码安装。需要先下载源代码,再用命令安装。
requests项目地址:https://github.com/kennethreitz/requests
有两种方式下载源代码:git,curl
git下载源代码:
gitclonegit://github.com/kennethreitz/requests.git
curl下载源代码:
curl-OL: https://github.com/kennethreitz/requests/tarball/master
下载完成后进入目录,执行下面命令即可安装:
cd requests
python3 setup.py install

安装成功,则进入Python解释器验证。
python3
>>>import requests
没有出现错误提示,表示安装成功。

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

1、相关连接
官方网站:http://www.seleniumhq.org
GitHub: https://github.com/SeleniumHQ/selenium/tree/master/py
PyPI: https://pypi.python.org/pypi/selenium
官方文梢:https://selenium-python.readthedocs.io
中文文档:http://selenium-python-zh.readthedocs.io

2、pip安装
直接使用pip安装即可。
pip3 install selenium

3、wheel安装
到PyPI上下载对应的wheel文件进行安装。
下载地址:https://pypi.python.org/pypi/selenium/#downloads
下载完成后,进入wheel文件目录,使用Pip安装:
pip3 install selenium-3.141.0-py2.py3-none-any.whl

4、验证安装
导入Selenium包没有出错,表示安装成功。
import selenium
安装了selenium,还需使用浏览器来配合selenium工作。后面来说浏览器配置方式。有了浏览器,才可以配合Selenium进行页面抓取。


(三)ChromeDriver的安装
前面安装的Selenium库是一个自动化测试工具,需要浏览器配合使用。下面说下Chrome浏览器及ChromeDriver驱动的配置。
首先下载chrome浏览器进行安装。安装完后就安装ChromeDriver。只有安装ChromeDriver才能驱动Chrome浏览器完成相应的操作。

1、相关连接
官方网站:https://sites.google.com/a/chromium.org/chromedriver
下载地址:https://chromedriver.storage.googleapis.com/index.html

2、准备工作
确保正确安装Chrome浏览器,并能正常运行。

3、查看版本
chrome的“帮助”-“关于GoogleChrome",可查看版本号。记住版本号选择对应的ChromeDriver。比如71.0

4、下载ChromeDriver
在镜像网站上下载对应版本的ChromeDriver。

5、环境变量配置
下载完成解压文件,将ChromeDriver的可执行文件配置到环境变量下。
在windows下,可直接将chromedriver.exe文件放到Python的Scripts目录下。
也可以单独将其所在的路径添加到环境变量中。

在Linux和Mac下,将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里。
方法一:sudo mv chromedriver /usr/bin #放到/usr/bin目录下
方法二:配置到$PATH,编辑家目录下的文件~/.profile,添加下面命令:
exportPATH="$PATH:/usr/local/chromedriver"
source~/.profile

6、验证安装
配置完后,可在命令行下直接执行chromedriver命令:
chromedriver
此时在屏幕上有:Onlylocalconnectionsareallowed.字样,表示OK。

下面再在程序中测试,执行下面的Python代码:
from selenium import webdriver
browser=webdriver.Chrome()
运行后,会弹出一个空白的Chrome浏览器,则证明所有的配置都没有问题。如果没有弹出,就检查之前的每一步配置。如果弹出后闪退,可能是ChromeDriver版本和Chrome版本不兼容,更换ChromeDriver版本。如果没有问题,接下来就可以利用Chrome来做网页抓取了。

7、GeckoDriver的安装
GeckoDriver是针对于Firefox浏览器的。
安装过程省略,详细过程可参考书箱P15。

(五)PhantomJS的安装
前面说的ChromeDriver的安装,虽然可以进行网页抓取,但程序运行过程需要一直开着浏览器,在爬取网页时浏览器可能一起动来动去。最新Chrome的浏览器支持无界面模式。版本较旧就不支持。还有另外一种选择,安装一无界面浏览器PhantomJS,此时抓取过程在后台运行,不会有窗口出现。

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

Selenium支持PhantomJS,运行的时候不会弹出一个浏览器。而且PhantomJS的运行效率也很高,支持各种参数配置,使用非常方便。下面是安装过程。

1、相关连接
官方网站:http://phantomjs.org
官方文梢:http://phantomjs.org/quick-start.html
下载地址:http://phantomjs.org/download.html
API接口说明:http://phantomjs.org/api/command-line.html

2、下载PhantomJS
在官方网站上根据对应的系统平台下载对应的安装包。下载完成后解压文件。在解压后的目录内有一个bin文件夹,里面有一个可执行文件phantomjs.exe。将该文件放在配置好的环境变量的路径下,或者将它所在的路径配置到环境变量里。
windows和linux的配置方法参考前面内容。
配置完成,可以命令行执行下面命令验证:
phantomjs
此时就进入到PhantomJS命令行,证明配置没问题。

3、验证安装
在Selenium中使用,需要将Chrome切换为PhantomJS即可:
fromseleniumimportwebdriver
browser=webdriver.PhantomJS()
browser.get("https://www.baidu.com")
print(browser.current_url)
运行后不会弹出浏览器,但PhantomJS已经在运行。这里访问了百度,然后将当前的URL打印出来。控制台输出如下:
https://www.baidu.com
此时,便完成了PhantomJS的配置。

(六)aiohttp的安装
requests库是一个阻塞式HTTP请求,即发出一个讲求后,程序会一直等待服务器响应,直到响应后,程序才会进行下一步处理。这是在浪费时间。在这等待过程中做一些其它事情,如进行请求的调度、响应的处理等,爬取效率会大大提高。

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

1、相关连接
官方文档:https://aiohttp.readthedocs.io/en/stable
GitHub: https://github.com/aio-libs/aiohttp
PyPI: https://pypi.python.org/pypi/aiohttp

2、pip安装
使用pip安装aiohttp,如下所示:
pip3 install aiohttp
另外还需要安装两个库:字符编码检测库cchardet,另一个是加速DNS解析库aiodns,安装命令如下:
pip3 install cchardet aiodns

3、测试安装
在python命令行下测试:
import aiohttp
没有报错,则库已经安装好。

这个库在维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大提高效率。

三、解析库的安装
抓取网页后要从网页提取信息。提取信息有多种方式,例如使用正则提取,但写起来相对烦琐。另外还有很多强大的解析库,例如lxml,BeautifulSoup,pyquery等。此外,还提供了非常强大的解析方法,如XPath解析和CSS选择器等,利用它们,可以高效便捷的从网页中提取有郊信息。

(一)lxml的安装
lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,解析效率非常高。

1、相关连接
官方网站:https://lxml.de
GitHub: https://github.com/lxml/lxml
PyPI: https://pypi.python.org/pypi/lxml

2、Windows下的安装
使用pip安装,执行下面的命令:
pip3 install lxml
没有报错表示安装成功。如果报错,并提示libxml2库等信息,可采用wheel方式安装。
下载wheel文件:http://www.lfd.uci.edu/~goblke/pythonlibs/#lxml
或者直接在百度上找与系统和Python版本对应的文件,下载到本地安装:
pip3 install lxml-xxx-win_amd64.whl

3、Linux下的安装
同样使用pip安装方式:
pip3 install lxml
如果有报错,可尝试下面解决方式:
a、CentsOS、RedHat
此类系统主要是缺少必要的库。先安装相应的库:
sudo yum group install- y development tools
sudo yum install –y epel-release libxslt-devel libxml2-devel openssl-devel
主要是libxslt-devel和libxml2-devel这两个库,lxml依赖它们。安装好之后,重新尝试pip安装即可.

b、Ubuntu、Debian和Deepin
同样的,要先安装必要的类库。
sudo apt-get install –y python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev
安装好后用pip进行安装。

4、Mac下安装
如果pip安装报错,先安装必要的类库。
xcode-select --install。

lxml很重要,后面的BeautifulSoup、Scrapy框架要用到此库。

5、验证安装
import lxml
执行上面命令没有报错,表明库已经安装好。

(二)BeautifulSoup的安装
BeautifulSoup是Python的一个HTML或XML的解析库,用它来方便地从网页中提取数据。拥有强大的API和多样的解析方式。

1、相关连接
官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc
中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh
PyPI: https://pypi.python.org/pypi/beautifulsoup4

2、准备工作
BeautifulSoup的HTML和XML解析器是依赖于lxml库,所以必须先完成lxml的安装。

3、pip安装
BeautifulSoup最新版本是4.x,之前的版本已停止开发。使用pip安装。
pip3 insatll beautifulsoup4

4、wheel安装
下载地址:https://pypi.python.org/pypi/beautifulsoup4
下载后使用pip安装。

5、验证安装
运行下面代码验证。
from bs4 import BeautifulSoup
soup=BeautifulSoup('<p>hello world<p>','lxml')
print(soup.p.string)#输出:hello world
有正确输出,表示安装成功。

在导入BeautifulSoup时,在导入的时候是bs4,是因为这个源代码包本身的库文件夹名是bs4,在安装完后,库文件夹被移入到本机的Python3的lib库里,所以识别到的库文件名是bs4。因此,包本身的名称与使用时导入的包的名称不一定是一致的。

(三)pyquery的安装
pyquery也是一个强大的网页解析工具,提供了和jQuery类似的语法来解析HTML文梢,支持css选择器,使用非常方便。

1、相关连接
GitHub: https://github.com/gawel/pyquery
PyPI: https://pypi.python.org/pypi/pyquery
官方文档:https://pyquery.readthedocs.io

2、pip安装
pip3 install pyquery

3、wheel安装
在PyPI网站上下载wheel对应版本的文件进行安装。
pip3 install pyquery-xxx.whl

4、验证安装
import pyquery
没有报错,表示安装成功。

(四)tesserocr的安装
使用OCR识别图形验证码。

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

可使用OCR技术将图片上的文字转化为电子文本,然后将识别结果提交给服务器,以达到自动识别的过程。

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

2、相关连接
tesserocrGitHub: https://github.com/sirfz/tesserocr
tesserocrPyPI: https://pypi.python.org/pypi/tesserocr
tesseract下载地址:http://digi.bib.uni-mannheim.de/tesseract
tesseractGitHub: https://github.com/tesseract-ocr/tesseract
tesseract语言包:https://github.com/tesseract-ocr/tessdata
tesseract文档:https://github.com/tesseract-ocr/tesseract/wiki/Documentation

3、Windows下的安装
用上面提供的下载地址进行下载,下载表中,有dev、beta字样的是开发版,其它是稳定版。下载稳定版安装。安装时勾选Additional language data(download)选项来安装OCR识别支持的语言包,这样OCR可识别多国语言。然后一路点击Next按钮。

安装完后,使用pip安装tesserocr。
pip3 install tesserocr pillow
使用conda安装
conda install –csimonflueckiger tesserocr pillow
使用wheel文件安装:
pip install tesserocr-2.4.0-cp36-cp36m-win_amd64.whl

4、Linux下的安装
安装过程省略,具体过程参考书籍P24。

5、Mac下的安装
安装过程省略,具体过程参考书籍P25

6、验证安装
使用tesseract和tesserocr分别进行测试。
首先看下tesseract支持的语言,先将tesseract的安装目录添加到环境变量中。
tesseract --list-langs | more #从输出可以看到有支持很多语言
List of available languages(121):
afr
amh
ara
asm
aze
aze_cyrl
bel
ben
bod
bos
bre
bul
cat
ceb
ces
chi_sim
chi_sim_vert
chi_tra
chi_tra_vert
chr
cos
cym
dan
...
其中chi_sim代表简体中文。
找一张带文字的图片进行测试。在命令行进入带文字图片的目录,进行测试。
tesseract image.png result -l eng && type result.txt
linux中的命令是:
tesseract image.png result -l eng && cat result.txt
上面的命令调用tesseract命令,第一个参数是图片名称,第二个参数result为结果保存的目标文件名,-l指定使用
的语言包,这里使用英文(eng)。后面用type/cat命令查看文件内容。

使用tesserocr库,利用python代码测试,代码如下:
import tesserocr
from PIL import Image
image = Image.open('image.png')
print(tesserocr.image_to_text(image))

四、数据库的安装
mysql安装、MongoDB安装、Redis安装
安装方式省略,详细过程参考书籍P27。

五、存储库的安装
数据库安装完后,要使用python访问数据库,就需要安装Python存储库。mysql需要安装pymysql,mongodb需要安装pymongo等。
安装过程省略。详细过程参考书籍P39。

验证安装
import pymysql
pymysql.VERSION #输出:(0,9,3,None)

import redis
redis.VERSION #输出:(3,0,1)

RedisDump的安装(未安装)
RedisDump是一个用于Redis数据导人/导出的工具,是基于Ruby实现的,要安装RedisDump,需要先安装Ruby。
1、相关连接
GitHub: https://github.com/delano/redis-dump
官方文档:https://delanotes.com/redis-dump

2、安装Ruby
安装方式参考:http://www.ruby-lang.org/zh_cn/documentation/installation

3、gem安装
安装完ruby就可以执行gem命令,类似于Python的pip命令。利用gem命令安装RedisDump.
gem install redis-dump
执行完毕即完成RedisDump的安装。

4、验证安装
成功安装,可执行下面两个命令:
redis -dum
redis -load

六、Web库的安装
web服务程序主要有Flask、Django和Tornado。

(一)、Flask的安装
Flask是一个轻量级的Web服务程序,简单、易用、灵活,可用来做一些API服务。

1、相关连接
GitHub: https://github.com/pallets/flask
官方文档:http://flask.pocoo.org
中文文档:http://docs.jinkan.org/docs/flask
PyPI: https://pypi.python.org/pypi/Flask

2、pip安装
使用pip安装flask:
pip install flask

3、安装验证
成功安装,测试下面代码是否能正常运行:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello world!"
if __name__ == "__main__":
    app.run()
运行上面的代码会在5000端口开户web服务,此时在浏览器地址栏输入http://127.0.0.1:5000,网页中显示Hello world!

后面会用到flask+redis维护动态代理池和Cookies池。

(二) Tornado的安装
Tornado是一个支持异步的Web框架,通过使用非阻塞I/O流,它可以支撑成千上万的开放连接,效率非常高。

1、相关连接
GitHub: https://github.com/tornadoweb/tornado
PyPI: https://pypi.python.org/pypi/tornado
官方文档:http://www.tornadoweb.org

2、pip安装
使用Pip安装Tornado:
pip3 install tornado

3、验证安装
编写一个程序测试,代码如下:
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(9999)
tornado.ioloop.IOLoop.current().start()

运行代码后在浏览地址栏输入:http://localhost:9999,即可在页面上看到:Hello world。说明tornado安装成功。
后面利用Tornado+Redis搭建ADSL拨号代理池。

七、App爬取相关库的安装
除了爬取web网页外,还可以抓取App的数据。要使用App中的页面加载出来,先要获取数据,这些数据一般是通过请求服务器的接口来获取的。App没有浏览器这种可以比较直观地看到后台请求的工具,所以主要用一些抓包技术来抓取数据。

抓包工具有:Charles, mitmproxy,mitmdump。简单的接口可用Charles, mitmproxy分析,找规律,然后直接用程序模拟抓取。复杂复杂接口要用mitmdump对接Python来对抓取到的请求和响应进行实时处理和保存。需要自动化去完成,还需要一个工具Appium,就像Selenium一样对App进行自动化控制,如自动化模拟App的点击、下拉等操作。

(一) Charles的安装
Charles是一个网络抓包工具,比Fiddler功能更为强大,跨平台支持更好,选用它来作为主要的移动端抓包工具。
Charles是一个收费的工具。
(相关过程省略,详细过程参考书籍P44)

(二) mitmproxy的安装
mitmproxy是一个支持HTTP和HTTPS的抓包程序,类似Fiddler、Charles的功能,只不过它通过控制台的形式操作。
(相关过程省略,详细过程参考书籍P50)

(三) Appium的安装
(相关过程省略,详细过程参考书籍P55)

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

有了框架不用再去关心某些功能的具体实现,只关心爬取逻辑即可。还可以大大简化代码量,架构也会变得清晰,爬取效率也高许多。有一定的基础,上手框架是一种好的选择。爬虫框架主要有pyspider和Scrapy。

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

1、相关连接
官方文档:http://docs.pyspider.org/
PyPI: https://pypi.python.org/pypi/pyspider
GitHub: https://github.com/binux/pyspider
官方教程:http://docs.pyspider.org/en/latest/tutorial
在线实例:http://demo.pyspider.org

2、准备工作
pyspider支持JavaScript渲染,它依赖于PhantomJS,在安装之前先安装PhantomJS。

3、pip安装
使用pip安装pyspider:
pip3 install pyspider

4、验证安装
在命令行下执行:
pyspider all
此时会启动5000的端口,在浏览器地址栏输入http://localhost:5000会看启动的网页。

(二) Scrapy的安装
(相关过程省略,详细过程参考书籍P61)

九、部署相关库的安装

(一) Docker的安装
(相关过程省略,详细参考书籍P67)

posted @ 2019-01-22 16:54  远方那一抹云  阅读(494)  评论(2编辑  收藏  举报