本列表包含Python網頁抓取和數據處理相關的庫。
網絡相關
-
通用
-
urllib - 網絡庫(標準庫)
-
requests - 網絡庫
-
grab - 網絡庫(基於pycurl)
-
urllib3 - 具有線程安全連接池、文件psot支持、高可用的Python HTTP庫
-
httplib2 - 網絡庫
-
RoboBrowser - 一個無需獨立瀏覽器即可訪問網頁的簡單、pythonic的庫
-
MechanicalSoup - 能完成自動網站交互的Python庫
-
mechanize - 有狀態、可編程的網頁瀏覽庫。
-
socket - 底層網絡接口(標準庫)
-
Unirest for Python - 一套支持多種語言的輕量級HTTP庫
-
hyper - Python HTTP/2客戶端
-
PySocks - SocksiPy持續更新並維護的版本,指出bug修復和一些其他功能,可以作爲socket模塊的替代品
-
異步
-
treq - 基於twisted、與requests類似的API
-
aiohttp - asyncio的HTTP客戶端/服務器 (PEP-3156)
網絡爬蟲框架
-
全能型爬蟲
-
grab - 網絡爬蟲框架(基於pycurl/multicurl)
-
scrapy - 網絡爬蟲框架(基於twisted)
-
pyspider - 一個強力的爬蟲系統
-
cola - 一個分佈式爬蟲框架
-
其他
-
portia - 基於Scrapy的可視化爬蟲
-
restkit - Python的HTTP資源庫。允許影虎簡單的訪問HTTP資源並用來創建項目
-
demiurge - 基於PyQuery的微型爬蟲框架
HTML/XML解析
-
通用
-
lxml - 高效的HTML/XML處理庫。支持XPATH,用C語言寫成
-
cssselect - 解析DOM樹和css選擇器
-
pyquery - 解析DOM樹和jQuery選擇器
-
BeautifulSoup - Python寫成的低效HTML/XMl處理庫
-
html5lib - 根據WHATWG規範生成HTML/ XML文檔的DOM。WHATWG規範是現在瀏覽器的通行規範
-
feedparser - 解析RSS/ATOM信息流
-
MarkupSafe - Python的XML/HTML/XHTML安全轉義字符串工具
-
xmltodict - 讓你處理XML如同處理JSON一樣
-
xhtml2pdf - HTML/CSS to PDF轉化器
-
untangle - 講XML文檔轉化爲Python項目以簡化處理難度
-
hodor - 支持lxml and cssselect的配置驅動包裝工具
-
清理
-
Bleach - 清理HTML (需求html5lib)
-
sanitize - 將混亂的數據世界恢復清楚
文本處理
解析及操作文本的庫
-
通用
-
difflib - 差異化計算工具(Python標準庫)
-
Levenshtein - 快速計算編輯距離及字符串相似度
-
fuzzywuzzy - 模糊字符串比匹配
-
esmre - 正則表達式加速器.
-
ftfy - 將Unicode文本自動整理減少碎片化
-
轉換
-
unidecode - Unicode轉化爲ASCII文本
-
字符編碼
-
uniout - 將轉移字符串輸出爲可讀形式
-
chardet - Python 2/3兼容字符編碼檢測器
-
xpinyin - 講漢字轉爲拼音的庫
-
pangu.py - CJK及字母數字文本間距格式化
-
Slug化
-
awesome-slugify - 可保留Unicode的Python slugify庫
-
python-slugify - 講Unicode轉爲ASCII的Python slugify庫
-
unicode-slugify - unicode slugs生成工具
-
pytils - 處理俄語字符串的小工具(包含pytils.translit.slugify)
-
通用解析器
-
PLY - Python lex和yacc解析工具
-
pyparsing - 用於生成解析器的通用框架
-
人名
-
python-nameparser - 姓名解析組件
-
電話號碼
-
phonenumbers - 處理、格式化、存儲、驗證全球電話號碼
-
用戶代理字符串
-
python-user-agents - 瀏覽器用戶代理解析器
-
HTTP Agent Parser - Python HTTP代理解析器
-
fake-useragent - 基於全球瀏覽器統計的Python用戶代理欺騙器
-
user_agent - 用戶代理數據生成器
特殊格式處理
處理特編輯特殊字符格式的庫
-
通用
-
tablib - 處理XLS, CSV, JSON, YAML等表格數據的庫
-
textract - 從任何文檔中提取文本,支持Word, PowerPoint, PDF等
-
messytables - 雜亂的表格數據解析
-
rows - 支持多種格式的通用且美觀的表格數據處理器(現有CSV, HTML, XLS, TXT -- 即將支持更多)
-
Office
-
python-docx - 閱讀,查詢和修改Microsoft Word 2007/2008 docx文件
-
XlsxWriter - 用於穿件Excel .xlsx文件的Python模塊
-
xlwings - 一個BSD許可的庫,是Excel與Python互相調用更加簡單
-
openpyxl - 可讀取、編輯Excel 2010xlsx/xlsm/xltx/xltm文件的庫
-
Marmir - 提取Python數據結構並將其轉化爲表格的庫
-
PDF
-
PDFMiner - 從PDF文檔中提取信息的工具
-
PyPDF2 - 一個分割、合併、轉換PDF文件的庫
-
ReportLab - 可以快速創建大量PDF文檔
-
pdftables - 從PDF文件中精準提取表格
-
Markdown
-
Python-Markdown - 一個用Python實現的John Gruber的Markdown
-
Mistune - 速度最快,功能全面的Markdown純Python解析器
-
markdown2 - 一個完全用Python實現的快速的Markdown
-
YAML
-
PyYAML - 一個Python的YAML解析器
-
CSS
-
cssutils - 一個Python的CSS庫
-
ATOM/RSS
-
feedparser - 通用的feed解析器
-
SQL
-
sqlparse - 一個無驗證的SQL語句分析器
-
HTTP
-
http-parser - C語言實現的HTTP請求/響應消息解析器
-
Microformats
-
opengraph - 一個用來解析Open Graph協議標籤的Python模塊
-
可移植的執行體
-
pefile - 一個多平臺的用於解析和處理可移植執行體(即PE)文件的模塊
-
PSD
-
psd-tools - 將Adobe Photoshop PSD(即PE)文件讀取到Python數據結構
自然語言處理
自然語言處理庫
- NLTK - Python自然語言處理領先者
- Pattern - Python的網絡挖掘模塊。他有自然語言處理工具,機器學習以及其它
- TextBlob - 爲深入處理自然語言的項目提供API,參考了NLTK及其他
- jieba - 中文分詞
- SnowNLP - 漢字文本處理庫
- loso - 中文分詞庫
- genius -基於條件隨機域的中文分詞
- langid.py - 獨立的語言識別系統
- Korean - 韓文形態庫
- pymorphy2 - 俄語形態分析器(詞性標註+詞形變化引擎)
- PyPLN - 用Python編寫的分佈式自然語言處理通道。這個項目的目標是創建一種簡單的方法使用NLTK通過網絡接口處理大語言庫
- langdetect - Python的谷歌語言檢測庫端口
瀏覽器自動化與仿真
-
瀏覽器
-
selenium - 自動化真實瀏覽器(Chrome, Firefox, Opera, IE)
-
Ghost.py - QtWebKit封裝(需求PyQT)
-
Spynner - 具備AJAX支持的程序化網頁瀏覽模塊
-
Splinter - 通用API瀏覽器模擬器(selenium web驅動,Django客戶端,Zope)
-
Headless工具
-
xvfbwrapper - 用於在X虛擬幀緩衝區(Xvfb)中運行顯示的Python包裝器
多進程併發
- threading - Python標準庫的多線程運行。因爲python GIL限制,對於I/O密集型任務很有效,對於CPU綁定的任務沒用
- multiprocessing - 多進程標準庫
- celery - 基於分佈式消息傳遞的異步任務隊列/作業隊列
- concurrent-futures - concurrent.futures模塊提供用於異步執行callable的高級接口
異步
異步網絡編程庫
- asyncio - 異步I/O,時間循環,協同程序和任務(Python 3.4以上版本的Python標準庫)
- Twisted - 基於事件驅動的網絡引擎框架
- Tornado - 一個Web框架及異步網絡庫
- pulsar - Python事件驅動的併發框架
- diesel - Python的基於Greenlet的I/O框架
- gevent - 一個基於協同程序的Python網絡庫,使用greenlet
- 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代碼
電子郵件
電子郵件處理庫
URL和網絡地址操作
URL和網絡地址操作庫
-
URL
-
furl - 一個小的Python庫,使得操縱URL簡單化
-
purl - 一個簡單的不可改變的URL以及一個乾淨的用於調試和操作的API
-
urllib.parse - 用於打破統一資源定位器(URL)的字符串在組件(尋址方案,網絡位置,路徑等)之間的隔斷,爲了結合組件到一個URL字符串,並將“相對URL”轉化爲一個絕對URL,稱之爲“基本URL”(標準庫)
-
tldextract - 使用公共後綴列表從URL的註冊域和子域中準確分離TLD
-
網絡地址
-
netaddr - 用於顯示和操縱網絡地址的Python庫
網頁內容提取
網頁內容提取庫
-
HTML頁面的文本和元數據
-
newspaper - 用Python進行新聞提取、文章提取和內容策展
-
html2text - 將HTML轉爲Markdown格式文本
-
python-goose - HTML內容/文章提取器
-
lassie - 人性化的網頁內容檢索工具
-
micawber - 一個從網址中提取豐富內容的小型庫
-
sumy -一個自動彙總文本文件和HTML網頁的模塊
-
Haul - 一個可擴展的圖像爬蟲
-
python-readability - arc90 readability工具的快速Python接口
-
scrapely - 從HTML網頁中提取結構化數據的庫。給出了一些Web頁面和數據提取的示例,scrapely爲所有類似的網頁構建一個分析器
-
libextract - 從網站提取數據
-
視頻
-
youtube-dl - 一個從YouTube下載視頻的小型命令行工具
-
you-get - Python3寫成的YouTube/Youku/Niconico視頻下載工具
-
Wiki
-
WikiTeam - 下載並保存wkiks的工具
WebSocket
用於WebSocket的庫
- Crossbar - 開源的應用消息傳遞路由器(Python實現的用於Autobahn的WebSocket和WAMP)
- AutobahnPython - 提供了WebSocket協議和WAMP協議的Python實現並且開源
- WebSocket-for-Python - Python 2和3以及PyPy的WebSocket客戶端和服務器庫
DNS解析
計算機視覺
- OpenCV - 開源計算機視覺庫
- SimpleCV - 用於照相機、圖像處理、特徵提取、格式轉換的簡介,可讀性強的接口(基於OpenCV)
- mahotas - 快速計算機圖像處理算法(完全使用 C++ 實現),完全基於 numpy 的數組作爲它的數據類型
代理服務器
- shadowsocks - 一個快速隧道代理,可幫你穿透防火牆(支持TCP和UDP,TFO,多用戶和平滑重啓,目的IP黑名單)
- tproxy - tproxy是一個簡單的TCP路由代理(第7層),基於Gevent,用Python進行配置
雜項
- user_agent - 此模塊用於生成隨機,有效的Web導航器的配置和用戶代理HTTP header