這章主要是爲網絡爬蟲做準備,配置一個開發環境, 爲了方便,操作系統爲Windows
1.1 安裝Python3
主要安裝Anaconda 3 64bit
1.2 請求庫安裝 (瀏覽器方面)
爬蟲可以分爲簡單幾步: 抓取頁面,分析頁面和存儲數據。
requests庫: 在抓取頁面過程中,我們需要模擬瀏覽器向服務器發出請求。
安裝方法: pip3 install requests
selenium庫: 一個自動化測試工具,利用它可以驅動瀏覽器執行特定的動作。如點擊、下拉等操作。
安裝方法: pip3 install selenium
安裝Chrome瀏覽器或ChromeDriver驅動,與Selenium對接
在 http://npm.taobao.org/mirrors/chromedriver/ 下載chromeDriver
下載後,將chromedriver.exe 複製到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
測試是否成功: 啓動python
from selenium import webdriver
browse = webdriver.Chrome()
就會彈出一個空白的Chrome瀏覽器。
對於Firefox來說,就需要安裝GeckoDriver,與Selenium對接
在 https://github.com/mozilla/geckodriver/releases/tag/v0.23.0 下載geckodriver-v0.23.0-win64.zip
下載後,將geckodriver.exe 複製到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
測試是否成功: 啓動python
from selenium import webdriver
browse = webdriver.Firefox()
PhantomJS是一個無界面的、可腳本編程的WebKit瀏覽器引擎,它原生支持多種Web標準:DOM操作,CSS選擇器、JSON、Canvas以用SVG。
在 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip 下載
將phantomjs.exe 複製到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
requests庫是一個阻塞式HTTP請求庫, 而aiohttp是一個提供異步Web服務的庫。
安裝: pip3 install aiohttp
aiohttp官方推薦安裝兩個庫: 一個字符編碼檢測庫cchardet, 另一個是加速DNS的解析庫aiodns
pip3 install cchardet aiodns
1.3 解析庫的安裝
抓取網頁代碼後,下一步就是從網頁中提取信息,使用正則來提取。
lxml是Python的一個解析庫,支持HTML和XML解析,支持XPath解析方法。
安裝: pip3 install lxml
Beautiful Soup是Python的一個HTML或XML的解析庫,從網頁中提取數據。
安裝: pip3 install beautifulsoup4
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<p>Hello</p>','lxml')
>>> print(soup.p.string)
Hello
pyquery一個強大的網頁解析工具。
安裝: pip3 install pyquery
tesserocr, 在爬蟲過程中,有各種各樣的驗證碼,可通過tesserocr來識別驗證碼,
tesserocr是python的一個OCR識別庫,是對tesseract做的一層PythonAPI封裝,核心是tesseract,在安裝tesserocr之前需要先安裝tesseract.
安裝tesseract: https://digi.bib.uni-mannheim.de/tesseract/
下載 tesseract-ocr-setup-3.05.01.exe
tesseract --list-langs 顯示支持的語言
測試tesseract是否安裝成功
>tesseract f:\image.png result -l eng
Tesseract Open Source OCR Engine v3.05.01 with Leptonica
>type result.txt
Python3WebSpider
----------------------------------------------------------------------------------------
安裝tesserocr比較麻煩,步驟如下:
進入Python,查看pip支持版本
import pip
import pip._internal
print(pip._internal.pep425tags.get_supported())
顯示如下:
[('cp35', 'cp35m', 'win_amd64'), ('cp35', 'none', 'win_amd64'), ('py3', 'none','win_amd64'),......]
根據以上紅色內容,在 https://github.com/simonflueckiger/tesserocr-windows_build/releases 查找
tesserocr-2.2.2-cp35-cp35m-win_amd64.whl 下載
然後,pip3 install tesserocr-2.2.2-cp35-cp35m-win_amd64.whl, 就將tesserocr安裝完成
再安裝 pillow
pip3 install pillow
最關鍵一步:將 C:\Program Files (x86)\Tesseract-OCR 安裝目錄下的 tessdata 目錄拷貝到
C:\Users\yunys\AppData\Local\Continuum\Anaconda3 Anaconda3的安裝目錄
測試tesserocr是否安裝成功
>>> import tesserocr
>>> from PIL import Image #PIL 就是 pillow
>>> image = Image.open('f:\image.png')
>>> print(tesserocr.image_to_text(image))
Python3WebSpider
1.4 數據庫安裝
數據庫我選 MySQL, 具體方法這裏不說了。
在Python3中,將數據存儲到MySQL中,需要藉助PyMySQL來操作。
安裝: pip3 install pymysql
驗證安裝是否成功
>>> import pymysql
>>> pymysql.VERSION
(0, 9, 2, None)
>>> db = pymysql.connect('localhost','root','mysql','review')
>>> cursor = db.cursor()
>>> cursor.execute("use review")
>>> cursor.execute("select fhbh from reviewprj limit 3")
3
>>> results = cursor.fetchall()
>>> for row in results:
. print(row[0])
複覈〔2013〕0636號
複覈〔2013〕0637號
複覈〔2013〕0638號
>>> ##成功!
這裏學習一下Redis
Redis是一個基於內存的高效的非關係型數據庫。
下載: https://github.com/MicrosoftArchive/redis/releases ,下載 Redis-x64-3.2.100.msi
Redis的端口是 6379, 安裝後,Redis會以服務的方式在後臺運行。
爲了管理方便,需要安裝一個 Redis Desktop Manager.
下載: https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8
redis-desktop-manager-0.8.8.384.exe
Python與redis交互用 redis-py
安裝: pip3 install redis
1.5 Web庫的安裝
Flask是一個輕理級的Web服務程序
安裝: pip3 install flask
驗證安裝成功
>>> app = Flask(__name__)
>>> @app.route("/")
def hello():
return "Hello world"
>>> if __name__ == "__main__":
app.run()
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Tornado是一個支持異步的Web框架,通過使用非阻塞I/O流。
安裝: 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(8888)
tornado.ioloop.IOLoop.current().start()
1.6 爬蟲框架的安裝
pyspider: 國人編寫的強大的網絡爬蟲框架,帶有強大的WebUI,腳本編輯器,任務控制器、項目管理器和結果處理器。
安裝: pip3 install pyspider
scrapy: 另一個爬蟲框架
安裝: conda install Scrapy
大部分的安裝環境和配置已完成,待在以後發現運行有問題再回來修改!