當前位置:成語大全網 - 書法字典 - Python網頁解析庫:抓取帶有請求的網頁-html

Python網頁解析庫:抓取帶有請求的網頁-html

Python中有很多可以解析網頁的庫,比如BeautifulSoup和lxml。互聯網上與爬行動物打交道的文章通常會介紹BeautifulSoup庫。我通常使用這個圖書館。最近我經常使用Xpath,所以我不習慣使用BeautifulSoup。我很早就知道大神Reitz創建了壹個名為Requests-HTML的庫,我壹直沒有興趣閱讀它。這壹次,是使用它的壹個壞機會。

使用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腳本來操作頁面,滾動操作需要壹個單獨的參數。這對於上拉加載等新頁面非常友好。