學習Pytho爬蟲常常會用到的一些庫!

千鋒武漢發表於2021-06-30

        Python,想必大家都是從爬蟲開始的吧。畢竟網上類似的資源很豐富,開源專案也非常多。下面小千就為大家介紹下學習Pytho爬蟲常常會用到的一些庫。

64

       一、 通用

       urllib -網路庫(stdlib)。

       requests -網路庫。

       grab – 網路庫(基於pycurl)。

       pycurl – 網路庫(繫結libcurl)。

       urllib3 – Python HTTP庫,安全連線池、支援檔案post、可用性高。

       httplib2 – 網路庫。

       RoboBrowser – 一個簡單的、極具Python風格的Python庫,無需獨立的瀏覽器即可瀏覽網頁。

       MechanicalSoup -一個與網站自動互動Python庫。

       mechanize -有狀態、可程式設計的Web瀏覽庫。

       socket – 底層網路介面(stdlib)。

       Unirest for Python – Unirest是一套可用於多種語言的輕量級的HTTP庫。

       hyper – Python的HTTP/2客戶端。

       PySocks – SocksiPy更新並積極維護的版本,包括錯誤修復和一些其他的特徵。作為socket模組的直接替換。

       二、 網路爬蟲框架

       1. 功能齊全的爬蟲

       grab – 網路爬蟲框架(基於pycurl/multicur)。

       scrapy – 網路爬蟲框架(基於twisted),不支援Python3。

       pyspider – 一個強大的爬蟲系統。

       cola – 一個分散式爬蟲框架。

       2. 其他

       portia – 基於Scrapy的視覺化爬蟲。

       restkit – Python的HTTP資源工具包。它可以讓你輕鬆地訪問HTTP資源,並圍繞它建立的物件。

       demiurge – 基於PyQuery的爬蟲微框架。

       三、 HTML/XML解析器

       1. 通用

       lxml – C語言編寫高效HTML/ XML處理庫。支援XPath。

       cssselect – 解析DOM樹和CSS選擇器。

       pyquery – 解析DOM樹和jQuery選擇器。

       BeautifulSoup – 低效HTML/ XML處理庫,純Python實現。

       html5lib – 根據WHATWG規範生成HTML/ XML文件的DOM。該規範被用在現在所有的瀏覽器上。

       feedparser – 解析RSS/ATOM feeds。

       MarkupSafe – 為XML/HTML/XHTML提供了安全轉義的字串。

       xmltodict – 一個可以讓你在處理XML時感覺像在處理JSON一樣的Python模組。

       xhtml2pdf – 將HTML/CSS轉換為PDF。

       untangle – 輕鬆實現將XML檔案轉換為Python物件。

       2. 清理

       Bleach – 清理HTML(需要html5lib)。

       sanitize – 為混亂的資料世界帶來清明。

       四、 文字處理:用於解析和操作簡單文字的庫。

       通用

       difflib – (Python標準庫)幫助進行差異化比較。

       Levenshtein – 快速計算Levenshtein距離和字串相似度。

       fuzzywuzzy – 模糊字串匹配。

       esmre – 正規表示式加速器。

       ftfy – 自動整理Unicode文字,減少碎片化。

       五、 自然語言處理:處理人類語言問題的庫。

       NLTK -編寫Python程式來處理人類語言資料的最好平臺。

       Pattern – Python的網路挖掘模組。他有自然語言處理工具,機器學習以及其它。

       TextBlob – 為深入自然語言處理任務提供了一致的API。是基於NLTK以及Pattern的巨人之肩上發展的。

       jieba – 中文分詞工具。

       SnowNLP – 中文文字處理庫。

       loso – 另一箇中文分詞庫。

       六、 瀏覽器自動化與模擬

       selenium – 自動化真正的瀏覽器(Chrome瀏覽器,火狐瀏覽器,Opera瀏覽器,IE瀏覽器)。

       Ghost.py – 對PyQt的webkit的封裝(需要PyQT)。

       Spynner – 對PyQt的webkit的封裝(需要PyQT)。

       Splinter – 通用API瀏覽器模擬器(selenium web驅動,Django客戶端,Zope)。

       七、 多重處理

       threading – Python標準庫的執行緒執行。對於I/O密集型任務很有效。對於CPU繫結的任務沒用,因為python GIL。

       multiprocessing – 標準的Python庫執行多程式。

       celery – 基於分散式訊息傳遞的非同步任務佇列/作業佇列。

       concurrent-futures – concurrent-futures 模組為呼叫非同步執行提供了一個高層次的介面。

       八、 非同步:非同步網路程式設計庫

       asyncio – (在Python 3.4 +版本以上的 Python標準庫)非同步I/O,時間迴圈,協同程式和任務。

       Twisted – 基於事件驅動的網路引擎框架。

       Tornado – 一個網路框架和非同步網路庫。

       pulsar – Python事件驅動的併發框架。

       diesel – Python的基於綠色事件的I/O框架。

       gevent – 一個使用greenlet 的基於協程的Python網路庫。

       eventlet – 有WSGI支援的非同步框架。

       Tomorrow – 非同步程式碼的奇妙的修飾語法。

       九、 佇列

       celery – 基於分散式訊息傳遞的非同步任務佇列/作業佇列。

       huey – 小型多執行緒任務佇列。

       mrq – Mr. Queue – 使用redis & Gevent 的Python分散式工作任務佇列。

       RQ – 基於Redis的輕量級任務佇列管理器。

       simpleq – 一個簡單的,可無限擴充套件,基於Amazon SQS的佇列。

       python-gearman – Gearman的Python API。

       十、 雲端計算

       picloud – 雲端執行Python程式碼。

       dominoup.com – 雲端執行R,Python和matlab程式碼

       十一、 網頁內容提取:提取網頁內容的庫

       HTML頁面的文字和後設資料 newspaper – 用Python進行新聞提取、文章提取和內容策展

       html2text – 將HTML轉為Markdown格式文字

       python-goose – HTML內容/文章提取器

       lassie – 人性化的網頁內容檢索工具

       十二、 WebSocket:用於WebSocket的庫

       Crossbar – 開源的應用訊息傳遞路由器(Python實現的用於Autobahn的WebSocket和WAMP)。

       AutobahnPython – 提供了WebSocket協議和WAMP協議的Python實現並且開源。

       WebSocket-for-Python – Python 2和3以及PyPy的WebSocket客戶端和伺服器庫。

       十三、 DNS解析

       dnsyo – 在全球超過1500個的DNS伺服器上檢查你的DNS。

       pycares – c-ares的介面。c-ares是進行DNS請求和非同步名稱決議的C語言庫。

       十四、 計算機視覺

       OpenCV – 開源計算機視覺庫。

       SimpleCV – 用於照相機、影像處理、特徵提取、格式轉換的簡介,可讀性強的介面(基於OpenCV)。

       mahotas – 快速計算機影像處理演算法(完全使用 C++ 實現),完全基於 numpy 的陣列作為它的資料型別。

       十五、 代理伺服器

       shadowsocks – 一個快速隧道代理,可幫你穿透防火牆(支援TCP和UDP,TFO,多使用者和平滑重啟,目的IP黑名單)。

       tproxy – tproxy是一個簡單的TCP路由代理(第7層),基於Gevent,用Python進行配置。

       關於框架的選擇誤區

       在框架的選擇問題上,許多人很容易就陷入了下面兩個誤區中而不自知 ~

       哪個框架比較好 ——世上沒有最好的框架,只有最適合你自己、最適合你的團隊的框架。

       程式語言選擇也是一個道理,你的團隊 Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,程式語言、框架都只是工具,能多、快、好、省的幹完活就是好東西。

       過分關注效能 ——其實大部分人是沒必要太關心框架的效能的,因為你開發的網站根本就是個小站,能上1萬的IP的網站已經不多了,上10萬的更是很少很少。

       在沒有一定的訪問量前談效能其實是沒有多大意義的,因為你的 CPU和記憶體一直就閒著呢。

        本文來自千鋒教育,轉載請註明出處。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2779016/,如需轉載,請註明出處,否則將追究法律責任。

相關文章