天天看點

python開源工具清單【持續更新】

以下是個人在工作中整理的一些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

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

 – 通用的feed解析器。

SQL

sqlparse

 – 一個非驗證的SQL語句分析器。

HTTP

http-parser

 – C語言實作的HTTP請求/響應消息解析器。

微格式

opengraph

 – 一個用來解析Open Graph協定标簽的Python子產品。

可移植的執行體

pefile

 – 一個多平台的用于解析和處理可移植執行體(即PE)檔案的子產品。

PSD

psd-tools

 – 将Adobe Photoshop PSD(即PE)檔案讀取到Python資料結構。

ORM對象關系映射

  1. SQLObject
- 優點:
采用了易懂的ActiveRecord 模式 
一個相對較小的代碼庫 
- 缺點:
方法和類的命名遵循了Java 的小駝峰風格 
不支援資料庫session隔離工作單元
           
  1. Storm
優點:
清爽輕量的API,短學習曲線和長期可維護性 
不需要特殊的類構造函數,也沒有必要的基類 
缺點:
迫使程式員手工寫表格建立的DDL語句,而不是從模型類自動派生 
Storm的貢獻者必須把他們的貢獻的版權給Canonical公司
           
  1. Django's ORM
優點:
易用,學習曲線短 
和Django緊密集合,用Django時使用約定俗成的方法去操作資料庫 
缺點:
不好處理複雜的查詢,強制開發者回到原生SQL 
緊密和Django內建,使得在Django環境外很難使用
           
  1. peewee
優點:
Django式的API,使其易用 
輕量實作,很容易和任意web架構內建 
缺點:
不支援自動化 schema 遷移 
多對多查詢寫起來不直覺
           
  1. 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進行配置。

雲計算

阿裡雲SDK集合

其他Python工具清單

awesome-python pycrumbs python-github-projects python_reference pythonidae