學(xué)Python菠劝,想必大家都是從爬蟲開始的吧。畢竟網(wǎng)上類似的資源很豐富睁搭,開源項目也非常多赶诊。
Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個大的版塊:抓取,分析园骆,存儲
當(dāng)我們在瀏覽器中輸入一個url后回車舔痪,后臺會發(fā)生什么?
簡單來說這段過程發(fā)生了以下四個步驟:
查找域名對應(yīng)的IP地址遇伞。
向IP對應(yīng)的服務(wù)器發(fā)送請求辙喂。
服務(wù)器響應(yīng)請求,發(fā)回網(wǎng)頁內(nèi)容鸠珠。
瀏覽器解析網(wǎng)頁內(nèi)容。
那么學(xué)習(xí)爬蟲需要掌握哪些庫呢秋麸?
通用:
urllib -網(wǎng)絡(luò)庫(stdlib)渐排。
requests -網(wǎng)絡(luò)庫。
grab – 網(wǎng)絡(luò)庫(基于pycurl)灸蟆。
pycurl – 網(wǎng)絡(luò)庫(綁定libcurl)驯耻。
urllib3 – Python HTTP庫,安全連接池、支持文件post可缚、可用性高霎迫。
httplib2 – 網(wǎng)絡(luò)庫。
RoboBrowser – 一個簡單的帘靡、極具Python風(fēng)格的Python庫知给,無需獨立的瀏覽器即可瀏覽網(wǎng)頁。
MechanicalSoup -一個與網(wǎng)站自動交互Python庫描姚。
mechanize -有狀態(tài)涩赢、可編程的Web瀏覽庫。
socket – 底層網(wǎng)絡(luò)接口(stdlib)轩勘。
Unirest for Python – Unirest是一套可用于多種語言的輕量級的HTTP庫筒扒。
hyper – Python的HTTP/2客戶端。
PySocks – SocksiPy更新并積極維護(hù)的版本绊寻,包括錯誤修復(fù)和一些其他的特征澎媒。作為socket模塊的直接替換。
網(wǎng)絡(luò)爬蟲框架
功能齊全的爬蟲
grab – 網(wǎng)絡(luò)爬蟲框架(基于pycurl/multicur)痴奏。
scrapy – 網(wǎng)絡(luò)爬蟲框架(基于twisted)永票,不支持Python3。
pyspider – 一個強(qiáng)大的爬蟲系統(tǒng)驮俗。
cola – 一個分布式爬蟲框架懂缕。
其他
portia – 基于Scrapy的可視化爬蟲。
restkit – Python的HTTP資源工具包王凑。它可以讓你輕松地訪問HTTP資源搪柑,并圍繞它建立的對象。
demiurge – 基于PyQuery的爬蟲微框架索烹。
HTML/XML解析器
通用
lxml – C語言編寫高效HTML/ XML處理庫工碾。支持XPath。
cssselect – 解析DOM樹和CSS選擇器百姓。
pyquery – 解析DOM樹和jQuery選擇器渊额。
BeautifulSoup – 低效HTML/ XML處理庫,純Python實現(xiàn)垒拢。
html5lib – 根據(jù)WHATWG規(guī)范生成HTML/ XML文檔的DOM旬迹。該規(guī)范被用在現(xiàn)在所有的瀏覽器上。
feedparser – 解析RSS/ATOM feeds求类。
MarkupSafe – 為XML/HTML/XHTML提供了安全轉(zhuǎn)義的字符串奔垦。
xmltodict – 一個可以讓你在處理XML時感覺像在處理JSON一樣的Python模塊。
xhtml2pdf – 將HTML/CSS轉(zhuǎn)換為PDF尸疆。
untangle – 輕松實現(xiàn)將XML文件轉(zhuǎn)換為Python對象椿猎。
清理
Bleach – 清理HTML(需要html5lib)惶岭。
sanitize – 為混亂的數(shù)據(jù)世界帶來清明。
文本處理
用于解析和操作簡單文本的庫犯眠。
通用
difflib – (Python標(biāo)準(zhǔn)庫)幫助進(jìn)行差異化比較按灶。
Levenshtein – 快速計算Levenshtein距離和字符串相似度。
fuzzywuzzy – 模糊字符串匹配筐咧。
esmre – 正則表達(dá)式加速器鸯旁。
ftfy – 自動整理Unicode文本,減少碎片化嗜浮。
自然語言處理
處理人類語言問題的庫羡亩。
NLTK -編寫Python程序來處理人類語言數(shù)據(jù)的最好平臺。
Pattern – Python的網(wǎng)絡(luò)挖掘模塊危融。他有自然語言處理工具畏铆,機(jī)器學(xué)習(xí)以及其它。
TextBlob – 為深入自然語言處理任務(wù)提供了一致的API吉殃。是基于NLTK以及Pattern的巨人之肩上發(fā)展的辞居。
jieba – 中文分詞工具。
SnowNLP – 中文文本處理庫蛋勺。
loso – 另一個中文分詞庫瓦灶。
瀏覽器自動化與仿真
selenium – 自動化真正的瀏覽器(Chrome瀏覽器,火狐瀏覽器抱完,Opera瀏覽器贼陶,IE瀏覽器)。
Ghost.py – 對PyQt的webkit的封裝(需要PyQT)巧娱。
Spynner – 對PyQt的webkit的封裝(需要PyQT)碉怔。
Splinter – 通用API瀏覽器模擬器(selenium web驅(qū)動,Django客戶端禁添,Zope)撮胧。
多重處理
threading – Python標(biāo)準(zhǔn)庫的線程運(yùn)行。對于I/O密集型任務(wù)很有效老翘。對于CPU綁定的任務(wù)沒用芹啥,因為python GIL。
multiprocessing – 標(biāo)準(zhǔn)的Python庫運(yùn)行多進(jìn)程铺峭。
celery – 基于分布式消息傳遞的異步任務(wù)隊列/作業(yè)隊列墓怀。
concurrent-futures – concurrent-futures 模塊為調(diào)用異步執(zhí)行提供了一個高層次的接口。
異步
異步網(wǎng)絡(luò)編程庫
asyncio – (在Python 3.4 +版本以上的 Python標(biāo)準(zhǔn)庫)異步I/O卫键,時間循環(huán)捺疼,協(xié)同程序和任務(wù)。
Twisted – 基于事件驅(qū)動的網(wǎng)絡(luò)引擎框架永罚。
Tornado – 一個網(wǎng)絡(luò)框架和異步網(wǎng)絡(luò)庫啤呼。
pulsar – Python事件驅(qū)動的并發(fā)框架。
diesel – Python的基于綠色事件的I/O框架呢袱。
gevent – 一個使用greenlet 的基于協(xié)程的Python網(wǎng)絡(luò)庫官扣。
eventlet – 有WSGI支持的異步框架。
Tomorrow – 異步代碼的奇妙的修飾語法羞福。
隊列
celery – 基于分布式消息傳遞的異步任務(wù)隊列/作業(yè)隊列惕蹄。
huey – 小型多線程任務(wù)隊列。
mrq – Mr. Queue – 使用redis & Gevent 的Python分布式工作任務(wù)隊列治专。
RQ – 基于Redis的輕量級任務(wù)隊列管理器卖陵。
simpleq – 一個簡單的,可無限擴(kuò)展张峰,基于Amazon SQS的隊列泪蔫。
python-gearman – Gearman的Python API。
云計算
picloud – 云端執(zhí)行Python代碼喘批。
dominoup.com – 云端執(zhí)行R撩荣,Python和matlab代碼
網(wǎng)頁內(nèi)容提取
提取網(wǎng)頁內(nèi)容的庫。
HTML頁面的文本和元數(shù)據(jù)
newspaper – 用Python進(jìn)行新聞提取饶深、文章提取和內(nèi)容策展餐曹。
html2text – 將HTML轉(zhuǎn)為Markdown格式文本。
python-goose – HTML內(nèi)容/文章提取器敌厘。
lassie – 人性化的網(wǎng)頁內(nèi)容檢索工具
WebSocket
用于WebSocket的庫台猴。
Crossbar – 開源的應(yīng)用消息傳遞路由器(Python實現(xiàn)的用于Autobahn的WebSocket和WAMP)。
AutobahnPython – 提供了WebSocket協(xié)議和WAMP協(xié)議的Python實現(xiàn)并且開源俱两。
WebSocket-for-Python – Python 2和3以及PyPy的WebSocket客戶端和服務(wù)器庫饱狂。
DNS解析
dnsyo – 在全球超過1500個的DNS服務(wù)器上檢查你的DNS。
pycares – c-ares的接口锋华。c-ares是進(jìn)行DNS請求和異步名稱決議的C語言庫嗡官。
計算機(jī)視覺
OpenCV – 開源計算機(jī)視覺庫。
SimpleCV – 用于照相機(jī)毯焕、圖像處理衍腥、特征提取、格式轉(zhuǎn)換的簡介纳猫,可讀性強(qiáng)的接口(基于OpenCV)婆咸。
mahotas – 快速計算機(jī)圖像處理算法(完全使用 C++ 實現(xiàn)),完全基于 numpy 的數(shù)組作為它的數(shù)據(jù)類型芜辕。