當前位置:股票大全官網 - 基金投資 - Python網頁解析庫:用請求爬行網頁

Python網頁解析庫:用請求爬行網頁

Python中有很多可以解析網頁的庫,比如BeautifulSoup和lxml。網上玩爬蟲的文章壹般都會介紹BeautifulSoup庫。我通常使用這個圖書館。最近用Xpath比較多,不太習慣用BeautifulSoup。很早就知道大神Reitz創建了壹個叫Requests-HTML的庫,壹直沒興趣看。這壹次,是個不好用的機會。

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