第一部分 開發環境配置

1、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或者python三、pip3,測試是否安裝成功。若是提示命令不存在,可檢查下環境變量設置。
python3
exit()
pip3 -V

(二)、Linux下的安裝
安裝過程省略。

2、請求庫的安裝
爬蟲分爲簡單幾步:抓取頁面、分析頁面和存儲數據。
在抓取頁面的過程當中,要模擬瀏覽器向服務器發出請求,須要用到一些Python庫來實
現HTTP請求操做。經常使用的第三方庫有requests、Selenium和aiohttp即等。

(一)、requests的安裝
requests屬於第三方庫,Python默認不自動安裝。須要手動安裝。
一、相關鏈接
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

二、pip安裝
windows、linux、mac均可以用pip包管理工具安裝。在命令行執行下面命令就能夠完成安裝。
pip3 install requests

三、wheel安裝
wheel是Python的一種安裝包,後綴是.whl主文件。要採用這種方式安裝,要先安裝wheel庫:
pip3 install wheel
接下來找到相應的requests的wheel文件下載到本地進行安裝。在前面提到的PyPI網站查找。下載到本地,進入wheel文件所在目錄的命令行下,執行命令安裝
pip3 install requests.whl #假設是requests.whl文件

四、源碼安裝
不用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渲染的頁面來講,這種抓取方式很是有效。

一、相關鏈接
官方網站: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

二、pip安裝
直接使用pip安裝便可。
pip3 install selenium

三、wheel安裝
到PyPI上下載對應的wheel文件進行安裝。
下載地址:https://pypi.python.org/pypi/selenium/#downloads
下載完成後,進入wheel文件目錄,使用Pip安裝:
pip3 install selenium-3.141.0-py2.py3-none-any.whl

四、驗證安裝
導入Selenium包沒有出錯,表示安裝成功。
import selenium
安裝了selenium,還需使用瀏覽器來配合selenium工做。後面來講瀏覽器配置方式。有了瀏覽器,才能夠配合Selenium進行頁面抓取。


(三)ChromeDriver的安裝
前面安裝的Selenium庫是一個自動化測試工具,須要瀏覽器配合使用。下面說下Chrome瀏覽器及ChromeDriver驅動的配置。
首先下載chrome瀏覽器進行安裝。安裝完後就安裝ChromeDriver。只有安裝ChromeDriver才能驅動Chrome瀏覽器完成相應的操做。

一、相關鏈接
官方網站:https://sites.google.com/a/chromium.org/chromedriver
下載地址:https://chromedriver.storage.googleapis.com/index.html

二、準備工做
確保正確安裝Chrome瀏覽器,並能正常運行。

三、查看版本
chrome的「幫助」-「關於GoogleChrome",可查看版本號。記住版本號選擇對應的ChromeDriver。好比71.0

四、下載ChromeDriver
在鏡像網站上下載對應版本的ChromeDriver。

五、環境變量配置
下載完成解壓文件,將ChromeDriver的可執行文件配置到環境變量下。
在windows下,可直接將chromedriver.exe文件放到Python的Scripts目錄下。
也能夠單獨將其所在的路徑添加到環境變量中。

在Linux和Mac下,將可執行文件配置到環境變量或將文件移動到屬於環境變量的目錄裏。
方法一:sudo mv chromedriver /usr/bin #放到/usr/bin目錄下
方法二:配置到$PATH,編輯家目錄下的文件~/.profile,添加下面命令:
exportPATH="$PATH:/usr/local/chromedriver"
source~/.profile

六、驗證安裝
配置完後,可在命令行下直接執行chromedriver命令:
chromedriver
此時在屏幕上有:Onlylocalconnectionsareallowed.字樣,表示OK。

下面再在程序中測試,執行下面的Python代碼:
from selenium import webdriver
browser=webdriver.Chrome()
運行後,會彈出一個空白的Chrome瀏覽器,則證實全部的配置都沒有問題。若是沒有彈出,就檢查以前的每一步配置。若是彈出後閃退,多是ChromeDriver版本和Chrome版本不兼容,更換ChromeDriver版本。若是沒有問題,接下來就能夠利用Chrome來作網頁抓取了。

七、GeckoDriver的安裝
GeckoDriver是針對於Firefox瀏覽器的。
安裝過程省略,詳細過程可參考書箱P15。

(五)PhantomJS的安裝
前面說的ChromeDriver的安裝,雖然能夠進行網頁抓取,但程序運行過程須要一直開着瀏覽器,在爬取網頁時瀏覽器可能一塊兒動來動去。最新Chrome的瀏覽器支持無界面模式。版本較舊就不支持。還有另一種選擇,安裝一無界面瀏覽器PhantomJS,此時抓取過程在後臺運行,不會有窗口出現。

PhantomJS是一個無界面的、可腳本編程的WebKit瀏覽器引擎,它原生支持多種Web標準:DOM操做、css選擇器、JSON、Canvas以及SVG。

Selenium支持PhantomJS,運行的時候不會彈出一個瀏覽器。並且PhantomJS的運行效率也很高,支持各類參數配置,使用很是方便。下面是安裝過程。

一、相關鏈接
官方網站:http://phantomjs.org
官方文梢:http://phantomjs.org/quick-start.html
下載地址:http://phantomjs.org/download.html
API接口說明:http://phantomjs.org/api/command-line.html

二、下載PhantomJS
在官方網站上根據對應的系統平臺下載對應的安裝包。下載完成後解壓文件。在解壓後的目錄內有一個bin文件夾,裏面有一個可執行文件phantomjs.exe。將該文件放在配置好的環境變量的路徑下,或者將它所在的路徑配置到環境變量裏。
windows和linux的配置方法參考前面內容。
配置完成,能夠命令行執行下面命令驗證:
phantomjs
此時就進入到PhantomJS命令行,證實配置沒問題。

三、驗證安裝
在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關鍵字的寫法變得更加簡情,架構更加清晰。使用異步請求庫進行數據抓取時,會大大提升效率,

一、相關鏈接
官方文檔:https://aiohttp.readthedocs.io/en/stable
GitHub: https://github.com/aio-libs/aiohttp
PyPI: https://pypi.python.org/pypi/aiohttp

二、pip安裝
使用pip安裝aiohttp,以下所示:
pip3 install aiohttp
另外還須要安裝兩個庫:字符編碼檢測庫cchardet,另外一個是加速DNS解析庫aiodns,安裝命令以下:
pip3 install cchardet aiodns

三、測試安裝
在python命令行下測試:
import aiohttp
沒有報錯,則庫已經安裝好。

這個庫在維護一個代理池時,利用異步方式檢測大量代理的運行情況,會極大提升效率。

3、解析庫的安裝
抓取網頁後要從網頁提取信息。提取信息有多種方式,例如使用正則提取,但寫起來相對煩瑣。另外還有不少強大的解析庫,例如lxml,BeautifulSoup,pyquery等。此外,還提供了很是強大的解析方法,如XPath解析和CSS選擇器等,利用它們,能夠高效便捷的從網頁中提取有郊信息。

(一)lxml的安裝
lxml是Python的一個解析庫,支持HTML和XML的解析,支持XPath解析方式,解析效率很是高。

一、相關鏈接
官方網站:https://lxml.de
GitHub: https://github.com/lxml/lxml
PyPI: https://pypi.python.org/pypi/lxml

二、Windows下的安裝
使用pip安裝,執行下面的命令:
pip3 install lxml
沒有報錯表示安裝成功。若是報錯,並提示libxml2庫等信息,可採用wheel方式安裝。
下載wheel文件:http://www.lfd.uci.edu/~goblke/pythonlibs/#lxml
或者直接在百度上找與系統和Python版本對應的文件,下載到本地安裝:
pip3 install lxml-xxx-win_amd64.whl

三、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進行安裝。

四、Mac下安裝
若是pip安裝報錯,先安裝必要的類庫。
xcode-select --install。

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

五、驗證安裝
import lxml
執行上面命令沒有報錯,代表庫已經安裝好。

(二)BeautifulSoup的安裝
BeautifulSoup是Python的一個HTML或XML的解析庫,用它來方便地從網頁中提取數據。擁有強大的API和多樣的解析方式。

一、相關鏈接
官方文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc
中文文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh
PyPI: https://pypi.python.org/pypi/beautifulsoup4

二、準備工做
BeautifulSoup的HTML和XML解析器是依賴於lxml庫,因此必須先完成lxml的安裝。

三、pip安裝
BeautifulSoup最新版本是4.x,以前的版本已中止開發。使用pip安裝。
pip3 insatll beautifulsoup4

四、wheel安裝
下載地址:https://pypi.python.org/pypi/beautifulsoup4
下載後使用pip安裝。

五、驗證安裝
運行下面代碼驗證。
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選擇器,使用很是方便。

一、相關鏈接
GitHub: https://github.com/gawel/pyquery
PyPI: https://pypi.python.org/pypi/pyquery
官方文檔:https://pyquery.readthedocs.io

二、pip安裝
pip3 install pyquery

三、wheel安裝
在PyPI網站上下載wheel對應版本的文件進行安裝。
pip3 install pyquery-xxx.whl

四、驗證安裝
import pyquery
沒有報錯,表示安裝成功。

(四)tesserocr的安裝
使用OCR識別圖形驗證碼。

一、OCR
OCR即Optical Character Recognition,光學字符識別,是經過掃描字符,而後經過其形狀將其翻譯成電子文本的過程。對於圖形驗證碼來講,它們都是一些不規則的字符,這些字符確實是由字符稍加扭曲變換獲得的內容。

可以使用OCR技術將圖片上的文字轉化爲電子文本,而後將識別結果提交給服務器,以達到自動識別的過程。

tesserocr是Python的一個OCR識別庫,但實際上是對tesseract作的是PythonAPI封裝,因此它的核心是tesseract。所以,在安裝tesserocr以前,要先安裝teseract.

二、相關鏈接
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

三、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

四、Linux下的安裝
安裝過程省略,具體過程參考書籍P24。

五、Mac下的安裝
安裝過程省略,具體過程參考書籍P25

六、驗證安裝
使用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))

4、數據庫的安裝
mysql安裝、MongoDB安裝、Redis安裝
安裝方式省略,詳細過程參考書籍P27。

5、存儲庫的安裝
數據庫安裝完後,要使用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。
一、相關鏈接
GitHub: https://github.com/delano/redis-dump
官方文檔:https://delanotes.com/redis-dump

二、安裝Ruby
安裝方式參考:http://www.ruby-lang.org/zh_cn/documentation/installation

三、gem安裝
安裝完ruby就能夠執行gem命令,相似於Python的pip命令。利用gem命令安裝RedisDump.
gem install redis-dump
執行完畢即完成RedisDump的安裝。

四、驗證安裝
成功安裝,可執行下面兩個命令:
redis -dum
redis -load

6、Web庫的安裝
web服務程序主要有Flask、Django和Tornado。

(一)、Flask的安裝
Flask是一個輕量級的Web服務程序,簡單、易用、靈活,可用來作一些API服務。

一、相關鏈接
GitHub: https://github.com/pallets/flask
官方文檔:http://flask.pocoo.org
中文文檔:http://docs.jinkan.org/docs/flask
PyPI: https://pypi.python.org/pypi/Flask

二、pip安裝
使用pip安裝flask:
pip install flask

三、安裝驗證
成功安裝,測試下面代碼是否能正常運行:
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流,它能夠支撐成千上萬的開放鏈接,效率很是高。

一、相關鏈接
GitHub: https://github.com/tornadoweb/tornado
PyPI: https://pypi.python.org/pypi/tornado
官方文檔:http://www.tornadoweb.org

二、pip安裝
使用Pip安裝Tornado:
pip3 install tornado

三、驗證安裝
編寫一個程序測試,代碼以下:
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撥號代理池。

7、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)

8、爬蟲框架的安裝
用requests、Selenium 等庫寫爬蟲,對於爬取量不大,速度要求不高,能夠知足需求的。寫多了會發現其內部許多代碼和組件是能夠複用的,把這些組件抽離出來,將各個功能模塊化,慢慢造成一個框架雛形,長此以往,爬蟲框架就誕生了。

有了框架不用再去關心某些功能的具體實現,只關心爬取邏輯便可。還能夠大大簡化代碼量,架構也會變得清晰,爬取效率也高許多。有必定的基礎,上手框架是一種好的選擇。爬蟲框架主要有pyspider和Scrapy。

(一) pyspider的安裝
pyspider是國人binux編寫的強大的網絡爬蟲框架,有強大的WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,同時支持多種數據庫後端、多種消息隊列,另外還支持JavaScript渲染頁面的爬取,使用很是方便。

一、相關鏈接
官方文檔: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

二、準備工做
pyspider支持JavaScript渲染,它依賴於PhantomJS,在安裝以前先安裝PhantomJS。

三、pip安裝
使用pip安裝pyspider:
pip3 install pyspider

四、驗證安裝
在命令行下執行:
pyspider all
此時會啓動5000的端口,在瀏覽器地址欄輸入http://localhost:5000會看啓動的網頁。

(二) Scrapy的安裝
(相關過程省略,詳細過程參考書籍P61)

9、部署相關庫的安裝

(一) Docker的安裝
(相關過程省略,詳細參考書籍P67)
css

相關文章
相關標籤/搜索