以下是個人在工作中整理的一些python wheel,供參考。
這個清單包含與網頁抓取和資料處理的Python庫
網絡
通用
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子產品的直接替換。
異步
treq– 類似于requests的API(基于twisted)。
aiohttp– asyncio的HTTP用戶端/伺服器(PEP-3156)。
網絡爬蟲架構
功能齊全的爬蟲
– 網絡爬蟲架構(基于pycurl/multicur)。
scrapy– 網絡爬蟲架構(基于twisted),不支援Python3。
pyspider– 一個強大的爬蟲系統。
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實作。
html5lib– 根據WHATWG規範生成HTML/ XML文檔的DOM。該規範被用在現在所有的浏覽器上。
feedparser– 解析RSS/ATOM feeds。
MarkupSafe– 為XML/HTML/XHTML提供了安全轉義的字元串。
xmltodict– 一個可以讓你在處理XML時感覺像在處理JSON一樣的Python子產品。
xhtml2pdf– 将HTML/CSS轉換為PDF。
untangle– 輕松實作将XML檔案轉換為Python對象。
Bleach– 清理HTML(需要html5lib)。
sanitize– 為混亂的資料世界帶來清明。
文本處理
用于解析和操作簡單文本的庫。
difflib– (Python标準庫)幫助進行差異化比較。
Levenshtein– 快速計算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– lex和yacc解析工具的Python實作。
pyparsing– 一個通用架構的生成文法分析器。
人名
python-nameparser-解析人的名字的元件。
進度條
tqdm means "progress" in Arabic (taqadum, تقدّم) and an abbreviation for "I love you so much" in Spanish電話
phonenumbers-解析,格式化,存儲和驗證國際電話号碼。
使用者代理字元串
python-user-agents– 浏覽器使用者代理的解析器。
HTTP Agent Parser– Python的HTTP代理分析器。
特定格式檔案處理
解析和處理特定文本格式的庫。
tablib– 一個把資料導出為XLS、CSV、JSON、YAML等格式的子產品。
textract– 從各種檔案中提取文本,比如 Word、PowerPoint、PDF等。
messytables– 解析混亂的表格資料的工具。
rows– 一個常用資料接口,支援的格式很多(目前支援CSV,HTML,XLS,TXT – 将來還會提供更多!)。
Office
python-docx– 讀取,查詢和修改的Microsoft Word2007/2008的docx檔案。
xlwt/
xlrd– 從Excel檔案讀取寫入資料和格式資訊。
XlsxWriter– 一個建立Excel.xlsx檔案的Python子產品。
xlwings– 一個BSD許可的庫,可以很容易地在Excel中調用Python,反之亦然。
openpyxl– 一個用于讀取和寫入的Excel2010 XLSX/ XLSM/ xltx/ XLTM檔案的庫。
Marmir– 提取Python資料結構并将其轉換為電子表格。
– 一個從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
– 通用的feed解析器。
SQL
sqlparse– 一個非驗證的SQL語句分析器。
HTTP
http-parser– C語言實作的HTTP請求/響應消息解析器。
微格式
opengraph– 一個用來解析Open Graph協定标簽的Python子產品。
可移植的執行體
pefile– 一個多平台的用于解析和處理可移植執行體(即PE)檔案的子產品。
PSD
psd-tools– 将Adobe Photoshop PSD(即PE)檔案讀取到Python資料結構。
ORM對象關系映射
- SQLObject
- 優點:
采用了易懂的ActiveRecord 模式
一個相對較小的代碼庫
- 缺點:
方法和類的命名遵循了Java 的小駝峰風格
不支援資料庫session隔離工作單元
- Storm
優點:
清爽輕量的API,短學習曲線和長期可維護性
不需要特殊的類構造函數,也沒有必要的基類
缺點:
迫使程式員手工寫表格建立的DDL語句,而不是從模型類自動派生
Storm的貢獻者必須把他們的貢獻的版權給Canonical公司
- Django's ORM
優點:
易用,學習曲線短
和Django緊密集合,用Django時使用約定俗成的方法去操作資料庫
缺點:
不好處理複雜的查詢,強制開發者回到原生SQL
緊密和Django內建,使得在Django環境外很難使用
- peewee
優點:
Django式的API,使其易用
輕量實作,很容易和任意web架構內建
缺點:
不支援自動化 schema 遷移
多對多查詢寫起來不直覺
- SQLAlchemy
優點:
企業級 API,使得代碼有健壯性和适應性
靈活的設計,使得能輕松寫複雜查詢
缺點:
工作單元概念不常見
重量級 API,導緻長學習曲線
自然語言處理
處理人類語言問題的庫。
NLTK-編寫Python程式來處理人類語言資料的最好平台。
Pattern– Python的網絡挖掘子產品。他有自然語言處理工具,機器學習以及其它。
TextBlob– 為深入自然語言處理任務提供了一緻的API。是基于NLTK以及Pattern的巨人之肩上發展的。
jieba– 中文分詞工具。
SnowNLP– 中文文本處理庫。
loso– 另一個中文分詞庫。
genius– 基于條件随機域的中文分詞。
langid.py– 獨立的語言識别系統。
Korean– 一個韓文形态庫。
pymorphy2– 俄語形态分析器(詞性标注+詞形變化引擎)。
PyPLN– 用Python編寫的分布式自然語言處理通道。這個項目的目标是建立一種簡單的方法使用NLTK通過網絡接口處理大語言庫。
浏覽器自動化與仿真
selenium– 自動化真正的浏覽器(Chrome浏覽器,火狐浏覽器,Opera浏覽器,IE浏覽器)。
Ghost.py– 對PyQt的webkit的封裝(需要PyQT)。
Spynner 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– 異步代碼的奇妙的修飾文法。
隊列
huey– 小型多線程任務隊列。
mrq– Mr. Queue – 使用redis & Gevent 的Python分布式工作任務隊列。
RQ– 基于Redis的輕量級任務隊列管理器。
simpleq– 一個簡單的,可無限擴充,基于Amazon SQS的隊列。
python-gearman– Gearman的Python API。
電子郵件
flanker– 電子郵件位址和Mime解析庫。
Talon– Mailgun庫用于提取消息的報價和簽名。
網址和網絡位址操作
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為所有類似的網頁建構一個分析器。
視訊
youtube-dl– 一個從YouTube下載下傳視訊的小指令行程式。
you-get– Python3的YouTube、優酷/ Niconico視訊下載下傳器。
維基
WikiTeam– 下載下傳和儲存wikis的工具。
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進行配置。