《Python3 網路爬蟲開發實戰》—學習筆記
開發環境配置
爬蟲可以簡單的分為幾步:抓取頁面、分析頁面和儲存資料。
在抓取頁面的過程中,需要模擬瀏覽器向伺服器發出請求,需要Python庫來實現HTTP請求操作。
請求庫安裝
requests
pip3 install requests
Selenium
Selenium是一個自動化測試工具,利用它可以驅動瀏覽器執行特定的動作,如點選、下拉等操作。對於一些JavaScript渲染的頁面來說,這種抓取方式非常有效。
pip3 install selenium
ChromeDriver
Selenium是一個自動化測試工具,需要瀏覽器來配合使用,ChromeDriver是Chrome瀏覽器的驅動配置。
- 檢視Google Chrome版本
- 下載對應的ChromeDriver
- 把下載的ChromeDriver.exe放到Google Chrome對應的目錄下
- 把上面的目錄新增到path路徑下
- 測試程式碼
from selenium import webdriver
brower = webdriver.Chrome()
- 執行程式碼後
PhantomJS
PhantomJS是一個無介面的、可指令碼程式設計的WebKit瀏覽器引擎,它原生支援多種Web標準:DOM操作、CSS選擇器、JSON、Canvas以及SVG。
Selenium支援PhantomJS,這樣在執行的時候就不會再彈出IG瀏覽器了。而且PhantomJS的執行效率也很高,還支援各種引數配置,使用非常方便。
- 下載
- 解壓
- exe檔案放到ChromeDriver相同的目錄下
- 驗證
from selenium import webdriver
>>> brower = webdriver.PhantomJS()
>>> brower = webdriver.PhantomJS()
>>> brower.get('https://www.baidu.com')
>>> print(brower.current_url)
https://www.baidu.com/
aiohttp
requests庫是一個阻塞式HTTP請求庫,當我們發出一個請求後,程式會一直等待伺服器響應,直到得到響應後,程式才會進行下一步處理。這個過程比較耗費時間。如果程式可以在這個等待過程中做一些其他的事情,如進行請求的排程、響應的處理等,那麼爬取效率會大大提高。
aiohttp提供非同步web服務的庫,aiohttp的非同步操作藉助於async/await關鍵字的寫法變得更加簡潔,架構更加清晰。使用非同步請求庫進行資料抓取時,會大大提高效率。
pip3 install aiohttp
aiohttp庫需要依賴setuptools庫,如果環境中沒有該庫,需要自己安裝。
pip3 install setuptools
另外官方推薦了兩個庫:一個是字元編碼檢測庫cchardet,另一個是加速DNS的解析庫aiodns。
pip3 install cchardet aiodns
解析庫的安裝
抓取網頁程式碼後,需要從網頁中提取資訊。提取資訊的方式多種多樣,可以使用正則來提取,但是寫起來相對比較繁瑣。可以借鑑強大的解析庫(lxml、Beautiful Soup、pyquery)和解析方法(XPath解析和CSS選擇器解析),利用他們可以高效便捷的從網頁中提取有效的資訊。
lxml
lxml是Python的一個解析庫,支援HTML和XML的解析,支援XPath解析方式,且解析效率非常高。
pip3 install lxml
Beautiful Soup
Beautiful Soup是Python的一個HTML或XML的解析庫,可以方便的從網頁找那個提取資料,它擁有強大的API和多樣的解析方式。
pip3 install beautifusoup4
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<p>Hello</p>', 'lxml')
>>> print(soup.p.string)
Hello
注意:雖然安裝的是beautifulsoup4這個包,但是引入的是bs4,這是因為這個包原始碼本身的庫檔名稱就是bs4,所以安裝完成後,這個庫資料夾就被移入到Python3的lib庫裡,所以識別到的庫檔名就叫作bs4。
pyquery
pyquery網頁解析工具提供和jQuery類似的語法來解析HTML文件,支援CSS選擇器。
pip3 install pyquery
tesserocr
在爬蟲的過程中會遇到各種各樣的驗證碼,大多數的驗證碼是圖形驗證碼,這時候可以直接用OCR來識別。
OCR,即Optical Character Recognition,光學字元識別,是指通過掃描字元,然後通過其形狀將其翻譯成電子文字的過程。對於圖形驗證碼來說,它們都是一些不規則的字元,這些字元確實是由字元稍加扭曲變換得到的內容。
tesserocr是Python的一個OCR識別庫,但其實是對tesseract做的一層Python API封裝,所以它的核心是tesseract。因此,在安裝tesserocr之前,需要先安裝tesseract。
- 下載tesseract
https://digi.bib.uni-mannheim.de/tesseract/ - 雙擊exe安裝
- 安裝tesserocr
pip3 install tesserocr
資料庫的安裝
作為資料儲存的重要部分,資料庫同樣是必不可少的,資料庫可以分為關係型資料庫和非關係型資料庫。
關係型資料庫如SQLite、MySQL、Oracle、SQL Server、DB2等,其資料庫是以表的形式儲存;非關係型資料庫如MongoDB、Redis,它們的儲存形式是鍵值對,儲存形式更加靈活。
MySQL
MongoDB
MongoDB是由C++語言編寫的非關係型資料庫,是一個基於分散式檔案儲存的開源資料庫系統,其內容儲存形式類似JSON物件,它的欄位值可以包含其他文件、陣列及文件陣列,非常靈活。
Redis
Redis是一個基於記憶體的高效的非關係型資料庫。
儲存庫的安裝
用來儲存資料的資料庫提供了儲存服務,如果和Python互動,還需要安裝Python儲存庫,如MySOL需要安裝P有MySQL,MongoDB需要安裝PyMongo。
PyMySQL
pip3 install pymaysql
PyMongo
pip3 install pymongo
redis-py
pip3 install redis
RedisDump
RedisDump是一個用於Redis資料匯入/匯出的工具,是基於Ruby實現的,所以要安裝RedisDump,需要先安裝Ruby。
Web庫的安裝
日常訪問的網站都是Web服務程式搭建而成的,Python也需要這樣的一些Web伺服器程式,比如Flask、Django等。可以用它們來開發網站和介面等。在網路爬蟲中主要使用這些Web伺服器程式來搭建一些API介面。例如,維護一個代理池,代理儲存在Redis資料庫中,將代理池作為一個公共的元件使用,構建獲取代理的平臺需要通過Web服務提供一個API介面,這樣只需要請求介面即可獲取新的代理,這樣做簡單、高效、實用。
Flask
Flask 是一個輕量級的Web伺服器程式,它簡單、易用、靈活,主要用來做一些API服務。
pip3 install flask
Tornado
Tornado是一個支援非同步的
參考資料
Chrome版本與chromedriver版本對照及下載【親測有效】【71-73】
Download PhantomJS
MySQL安裝教程(Windows系統)
相關文章
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- 【閱讀筆記】《Python3網路爬蟲開發實戰》PDF文件筆記Python爬蟲
- Python3網路爬蟲開發實戰Python爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE
- python3網路爬蟲開發實戰pdfPython爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 《Python3網路爬蟲開發實戰》開源啦!Python爬蟲
- python3網路爬蟲開發實戰(配置踩坑及學習備忘)Python爬蟲
- [Python3網路爬蟲開發實戰] Charles 的使用Python爬蟲
- [Python3網路爬蟲開發實戰] --Splash的使用Python爬蟲
- Python3網路爬蟲開發實戰(第二版)Python爬蟲
- 《崔慶才Python3網路爬蟲開發實戰教程》學習筆記(1):Windows下Python多版本共存配置方法Python爬蟲筆記Windows
- Python3網路爬蟲開發實戰——第1章 開發環境Python爬蟲開發環境
- 面前最全《崔慶才python3網路爬蟲開發實戰》Python爬蟲
- python3 網路爬蟲開發實戰 貓眼top100Python爬蟲
- 《Python3網路爬蟲開發實戰程式碼》基本庫使用Python爬蟲
- 爬蟲實戰開發學習(一)爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 2-網頁基礎Python爬蟲網頁
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- Python 3網路爬蟲開發實戰Python爬蟲
- 《Python3網路爬蟲開發實戰》抽獎贈書活動Python爬蟲
- python3網路爬蟲開發實戰【高清掃描帶目錄】Python爬蟲
- Python3網路爬蟲開發實戰——第3章 基本庫的使用Python爬蟲
- Python 開發簡單爬蟲 (學習筆記)Python爬蟲筆記
- 網路爬蟲——爬蟲實戰(一)爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 1-HTTP基本原理Python爬蟲HTTP
- Python3網路爬蟲快速入門實戰解析Python爬蟲
- Python學習筆記——爬蟲之Scrapy專案實戰Python筆記爬蟲
- 【Python3網路爬蟲開發實戰】3.4-抓取貓眼電影排行Python爬蟲
- python3網路爬蟲開發實戰-線上版-可複製貼上Python爬蟲
- 2019最新崔慶才python3網路爬蟲開發專案實戰(完整)Python爬蟲
- 《Python3網路爬蟲開發實戰(第二版)》內容介紹Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 5-代理的基本原理Python爬蟲
- 【Python學習筆記1】Python網路爬蟲初體驗Python筆記爬蟲