1. 程式人生 > >GitHub上Python的爬蟲工具

GitHub上Python的爬蟲工具

網路相關

  • 通用
    • urllib - 網路庫(標準庫)
    • grab - 網路庫(基於pycurl)
    • urllib3 - 具有執行緒安全連線池、檔案psot支援、高可用的Python HTTP庫
    • RoboBrowser - 一個無需獨立瀏覽器即可訪問網頁的簡單、pythonic的庫
    • mechanize - 有狀態、可程式設計的網頁瀏覽庫。
    • socket - 底層網路介面(標準庫)
    • hyper - Python HTTP/2客戶端
    • PySocks - SocksiPy持續更新並維護的版本,指出bug修復和一些其他功能,可以作為socket模組的替代品
  • 非同步
    • treq - 基於twisted、與requests類似的API
    • aiohttp - asyncio的HTTP客戶端/伺服器 (PEP-3156)

網路爬蟲框架

  • 全能型爬蟲
    • grab - 網路爬蟲框架(基於pycurl/multicurl)
    • scrapy - 網路爬蟲框架(基於twisted)
    • 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規範是現在瀏覽器的通行規範
    • 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標準庫)
    • esmre - 正則表示式加速器.
    • ftfy - 將Unicode文字自動整理減少碎片化
  • 轉換
  • 字元編碼
    • uniout - 將轉移字串輸出為可讀形式
    • chardet - Python 2/3相容字元編碼檢測器
    • pangu.py - CJK及字母數字文字間距格式化
  • Slug化
    • awesome-slugify - 可保留Unicode的Python slugify庫
    • python-slugify - 講Unicode轉為ASCII的Python slugify庫
    • pytils - 處理俄語字串的小工具(包含pytils.translit.slugify)
  • 通用解析器
    • PLY - Python lex和yacc解析工具
  • 電話號碼
    • phonenumbers - 處理、格式化、儲存、驗證全球電話號碼

特殊格式處理

處理特編輯特殊字元格式的庫

  • 通用
    • tablib - 處理XLS, CSV, JSON, YAML等表格資料的庫
    • textract - 從任何文件中提取文字,支援Word, PowerPoint, PDF等
    • rows - 支援多種格式的通用且美觀的表格資料處理器(現有CSV, HTML, XLS, TXT -- 即將支援更多)
  • Office
    • python-docx - 閱讀,查詢和修改Microsoft Word 2007/2008 docx檔案
    • xlwt / xlrd - 從Excel讀取及寫入資料和格式化資訊
    • 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解析器
  • ATOM/RSS
  • 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 - 中文分詞
  • loso - 中文分詞庫
  • genius -基於條件隨機域的中文分詞
  • 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繫結的任務沒用
  • 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支援的非同步框架

佇列

  • celery - 基於分散式訊息傳遞的非同步任務佇列/作業佇列
  • huey - 小型多執行緒任務佇列
  • mrq - Mr. Queue - 使用redis & Gevent 的Python分散式工作任務佇列
  • RQ - 基於Redis的輕量級任務佇列管理器
  • simpleq - 一個簡單的,可無限擴充套件,基於Amazon SQS的佇列

雲端計算

電子郵件

電子郵件處理庫

  • flanker - 電子郵件及MIME處理庫
  • Talon - Mailgun庫用於提取訊息的報價和簽名

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格式文字
    • lassie - 人性化的網頁內容檢索工具
    • micawber - 一個從網址中提取豐富內容的小型庫
    • sumy -一個自動彙總文字檔案和HTML網頁的模組
    • Haul - 一個可擴充套件的影象爬蟲
    • python-readability - arc90 readability工具的快速Python介面
    • scrapely - 從HTML網頁中提取結構化資料的庫。給出了一些Web頁面和資料提取的示例,scrapely為所有類似的網頁構建一個分析器
  • 視訊
    • 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解析

  • dnsyo - 在全球超過1500個的DNS伺服器上檢查你的DNS
  • pycares - ic-ares的介面。c-ares是進行DNS請求和非同步名稱決議的C語言庫

計算機視覺

  • OpenCV - 開源計算機視覺庫
  • SimpleCV - 用於照相機、影象處理、特徵提取、格式轉換的簡介,可讀性強的介面(基於OpenCV)
  • mahotas - 快速計算機影象處理演算法(完全使用 C++ 實現),完全基於 numpy 的陣列作為它的資料型別

代理伺服器

  • shadowsocks - 一個快速隧道代理,可幫你穿透防火牆(支援TCP和UDP,TFO,多使用者和平滑重啟,目的IP黑名單)
  • tproxy - tproxy是一個簡單的TCP路由代理(第7層),基於Gevent,用Python進行配置

雜項

  • user_agent - 此模組用於生成隨機,有效的Web導航器的配置和使用者代理HTTP header

其他