Python 程式設計師,特別是做爬蟲的同學都知道 HTTP 請求庫 Requests,Requests 完美體現了 “for Humans” 這個詞要表達的意思。
它的作者是高顏值的攝影愛好者 kennethreitz ,kennethreitz 寫過很多的庫, 除了 Requests 、還有 pipenv,一個更好的整合了包管理和環境管理的工具。日期時間庫 maya 等等。
這兩天他又搞出一個新專案叫 Requests-HTML,HTML Parsing for Humans 連結:https://github.com/kennethreitz/requests-html ,顧名思義,它是用於解析 HTML 文件的。短短兩天專案的 Star 已經超過3000
以前我們寫爬蟲,解析 HTML 頁面通常會選擇 BeautifulSoup 或者是 lxml 庫,雖然 BeautifulSoup 的 API 比較友好,但是它的解析效能低下,而 lxml 使用 xpath 語法,解析速度快,但是程式碼沒什麼可讀性,現在 kennethreitz 搞出來的這個 html 解析庫繼承了 requests 庫的優良傳統 —- for humans。
我們知道 requests 只負責網路請求,但不對響應結果進行解析,你可以把 requests-html 理解為可以解析 html 文件的 requsts 庫。
Requests-HTML 的程式碼量其實非常少,目前不到 200 行,都是基於現有的框架進行二次封裝,使得開發者使用的時候更方便呼叫。它依賴於 PyQuery、Requests、lxml 等庫。
安裝
pip install requests-html
複製程式碼
使用方法
>>> from requests_html import session
# 返回一個Response物件
>>> r = session.get('https://python.org/')
# 獲取所有連結
>>> r.html.links
{'/users/membership/', '/about/gettingstarted/'}
# 使用css選擇器的方式獲取某個元素
>>> about = r.html.find('#about')[0]
>>> print(about.text)
About
Applications
Quotes
Getting Started
Help
Python Brochure
複製程式碼
另外,還有一個非常吸引人的特點是,它能將html轉換為markdown文字
# 將html轉換為Markdown文字
>>> print(about.markdown)
* [About](/about/)
* [Applications](/about/apps/)
* [Quotes](/about/quotes/)
* [Getting Started](/about/gettingstarted/)
* [Help](/about/help/)
* [Python Brochure](http://brochure.getpython.info/)
複製程式碼
更多使用方法可以參考文件:https://github.com/kennethreitz/requests-html
那麼元類到底有什麼用處呢?我們真的需要元類嗎?請關注下回講解,(留給大家多些時間消化,O(∩_∩)O)
部落格: foofish.net
公眾號:Python之禪