使用PIPINInstall Requests-HTML安裝與其他Reitz庫壹樣簡單方便:
這個庫是在requests庫上實現的,R獲得的結果是Response對象下的壹個子類,具有多個html屬性。因此這個R可以做請求庫的響應對象可以做的任何事情。如果您需要解析網頁,請直接獲取響應對象的html屬性:
我必須崇拜上帝瑞茲。他很擅長組裝。實際上,HTMLSession繼承自請求的核心類。會話,然後重寫請求中的請求方法。會話類返回它自己的HTMLResponse對象之壹。此類繼承自請求。響應,但添加了壹個_from_response方法來構造實例:
之後,在htmlResponse中定義屬性方法html,可以通過HTML屬性訪問該方法。實現是組裝PyQuery。大多數核心解析類也使用PyQuery和lxml進行解析,這簡化了名稱,相當討人喜歡。
有兩種定位元素的方法:
方法名非常簡單,符合Python優雅的風格。在這裏,我們不妨簡單解釋壹下這兩種方法:
定位元素後,需要獲取元素中的內容和屬性相關數據,並獲取文本:
獲取元素的屬性:
您還可以通過模式匹配相應的內容:
這個功能看起來像雞肋,可以進壹步研究和優化,也許可以在github上提交。
除了壹些基本操作之外,這個庫還提供了壹些人性化的操作。例如,壹鍵訪問網頁上的所有超鏈接對整個爬蟲來說應該是壹個福音,並且URL管理更加方便:
內容頁面通常是分頁的,因此您不能壹次抓取太多內容。此庫可以獲取分頁信息:
結果如下:
通過叠代器,實現智能發現分頁。在這個叠代器中,將使用壹個名為_next的方法,並將發布壹段源代碼。
通過查找A標簽是否包含指定文本來判斷是否有下壹頁,通常我們的下壹頁將由下壹頁或加載更多來引導,他使用此標誌來判斷。默認情況下,有壹個全局列表:【‘下壹個’,‘更多’,‘更早’”。我個人認為這種方法非常不靈活,很難擴展。感興趣的可以向github提交代碼優化。
也許考慮到現在js的壹些異步加載,這個庫支持js運行時。官方解釋如下:
使用起來非常簡單,可以直接調用以下方法:
當妳第壹次使用它時,妳會下載Chromium,但在中國,妳知道,自己想辦法下載它,所以不要等它自己下載。render函數可以使用js腳本來操作頁面,滾動操作需要壹個單獨的參數。這對於上拉加載等新頁面非常友好。