爬蟲的編程語言有不少,但 Python 絕對是其中的主流之一。今天就為大家介紹下 Python 在編寫網(wǎng)絡(luò)爬蟲常常用到的一些庫。
請求庫:實(shí)現(xiàn) HTTP 請求操作
urllib:一系列用于操作URL的功能。
requests:基于 urllib 編寫的,阻塞式 HTTP 請求庫,發(fā)出一個請求,一直等待服務(wù)器響應(yīng)后,程序才能進(jìn)行下一步處理。
selenium:自動化測試工具。一個調(diào)用瀏覽器的 driver,通過這個庫你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗(yàn)證碼。
aiohttp:基于 asyncio 實(shí)現(xiàn)的 HTTP 框架。異步操作借助于 async/await 關(guān)鍵字,使用異步庫進(jìn)行數(shù)據(jù)抓取,可以大大提高效率。
解析庫:從網(wǎng)頁中提取信息
beautifulsoup:html 和 XML 的解析,從網(wǎng)頁中提取信息,同時擁有強(qiáng)大的API和多樣解析方式。
pyquery:jQuery 的 Python 實(shí)現(xiàn),能夠以 jQuery 的語法來操作解析 HTML 文檔,易用性和解析速度都很好。
lxml:支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
tesserocr:一個 OCR 庫,在遇到驗(yàn)證碼(圖形驗(yàn)證碼為主)的時候,可直接用 OCR 進(jìn)行識別。
存儲庫:Python 與數(shù)據(jù)庫交互
pymysql:一個純 Python 實(shí)現(xiàn)的 MySQL 客戶端操作庫。
pymongo:一個用于直接連接 mongodb 數(shù)據(jù)庫進(jìn)行查詢操作的庫。
redisdump:一個用于 redis 數(shù)據(jù)導(dǎo)入/導(dǎo)出的工具?;?ruby 實(shí)現(xiàn)的,因此使用它,需要先安裝 Ruby。
爬蟲框架
Scrapy:很強(qiáng)大的爬蟲框架,可以滿足簡單的頁面爬取(比如可以明確獲知url pattern的情況)。用這個框架可以輕松爬下來如亞馬遜商品信息之類的數(shù)據(jù)。但是對于稍微復(fù)雜一點(diǎn)的頁面,如 weibo 的頁面信息,這個框架就滿足不了需求了。
Crawley:高速爬取對應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫,數(shù)據(jù)可以導(dǎo)出為 JSON、XML 等。
Portia:可視化爬取網(wǎng)頁內(nèi)容。
newspaper:提取新聞、文章以及內(nèi)容分析。
python-goose:java 寫的文章提取工具。
cola:一個分布式爬蟲框架。項(xiàng)目整體設(shè)計有點(diǎn)糟,模塊間耦合度較高。
Web 框架庫
flask:輕量級的 web 服務(wù)程序,簡單,易用,靈活,主要來做一些 API 服務(wù)。做代理時可能會用到。
django:一個 web 服務(wù)器框架,提供了一個完整的后臺管理,引擎、接口等,使用它可做一個完整網(wǎng)站。