導航:首頁 > 使用方法 > 解析網頁的常用方法

解析網頁的常用方法

發布時間:2024-09-20 04:06:15

㈠ 逆向解析法是用於靜態網頁數據的基本爬取

這里以python為例,主要分為靜態網頁數據的爬取和動態網頁數據的爬取,主要內容如下

靜態網頁數據

這里的數據都嵌套在網頁源碼中,所以直接requests網頁源碼進行解析就行,下面我簡單介紹一下,這里以爬取糗事網路上的數據為例:

1.首先,打開原網頁,如下,這里假設要爬取的欄位包括昵稱、內容、好笑數和評論數:

接著查看網頁源碼,如下,可以看的出來,所有的數據都嵌套在網頁中:

2.然後針對以上網頁結構,我們就可以直接編寫爬蟲代碼,解析網頁並提取出我們需要的數據了,測試代碼如下,非常簡單,主要用到requests+BeautifulSoup組合,其中requests用於獲取網頁源碼,BeautifulSoup用於解析網頁提取數據:

點擊運行這個程序,效果如下,已經成功爬取了到我們需要的數據:

動態網頁數據

這里的數據都沒有在網頁源碼中(所以直接請求頁面是獲取不到任何數據的),大部分情況下都是存儲在一個json文件中,只有在網頁更新的時候,才會載入數據,下面我簡單介紹一下這種方式,這里以爬取人人貸上面的數據為例:

1.首先,打開原網頁,如下,這里假設要爬取的數據包括年利率,借款標題,期限,金額和進度:

接著按F12調出開發者工具,依次點擊「Network」->「XHR」,F5刷新頁面,就可以找打動態載入的json文件,如下,也就是我們需要爬取的數據:

2.然後就是根據這個json文件編寫對應代碼解析出我們需要的欄位信息,測試代碼如下,也非常簡單,主要用到requests+json組合,其中requests用於請求json文件,json用於解析json文件提取數據:

點擊運行這個程序,效果如下,已經成功爬取到我們需要的數據:

至此,我們就完成了利用python網路爬蟲來獲取網站數據。總的來說,整個過程非常簡單,python內置了許多網路爬蟲包和框架(scrapy等),可以快速獲取網站數據,非常適合初學者學習和掌握,只要你有一定的爬蟲基礎,熟悉一下上面的流程和代碼,很快就能掌握的,

㈡ Python爬蟲:HTML網頁解析方法小結

要理解python是如何解析網頁的,首先要理解什麼是網頁解析器。

簡單的說就是用來解析html網頁的工具,准確的說:它是一個HTML網頁信息提取工具,就是從html網頁中解析提取出「我們需要的有價值的數據」或者「新的URL鏈接」的工具。

解析HTML:

我們知道爬蟲的原理無非是把目標網址的內容下載下來存儲到內存中,這個時候它的內容其實是一堆HTML,然後再對這些HTML內容進行解析,按照自己的想法提取出想要的數據。

今天主要講講Python中解析網頁HTML內容的四種方法:

其中BeautifulSoup和XPath是python中解析網頁常用的兩個庫,對於新手來說是利器,零基礎小白建議先打好Python基礎再去上手爬蟲會容易一些。

「零基礎如何學Python」在知乎看到過一篇比較好的問答貼,講的很實用,大傢伙可以移步去看看,鏈接分享在下方。

1、BeautifulSoup

大名鼎鼎的BeautifulSoup庫,在Pyhton的HTML解析庫里屬於重量級的庫。

安裝途徑:

解析的第一步,是構建一個BeautifulSoup對象。

第二個參數表示解析器,BeautifulSoup支持以下多種解釋器:

BeautifulSoup對應一個HTML/XML文檔的全部內容;

BeautifulSoup類的基本元素

任何存在於HTML語法中的標簽都可以用soup.訪問獲得,當HTML文檔中存在多個相同對應內容時,soup.返回第一個。

每個都有自己的名字,通過.name獲取,字元串類型 Tag的attrs:一個可以有0或多個屬性,字典類型 NavigableString可以跨越多個層次

1)訪問標簽

通過點號操作符,可以直接訪問文檔中的特定標簽,示例:

這樣的方式每次只會返迴文檔中的第一個標簽,對於多個標簽,則通過find_all方法返回多個標簽構成的列表。

還可以在find方法中添加過濾條件,更加精確的定位元素。

2)訪問標簽內容和屬性

通過name和string可以訪問標簽的名字和內容,通過get和中括弧操作符則可以訪問標簽中的屬性和值。

結合定位元素和訪問屬性的方法,可以方便快捷的提取對應元素,提高解析html的便利性。

使用Beautiful Soup庫解析網頁

BeautifulSoup解析內容同樣需要將請求和解析分開,從代碼清晰程度來講還將就,不過在做復雜的解析時代碼略顯繁瑣,總體來講用起來還不錯,看個人喜好吧。

爬蟲的基本技能最重要的兩點:如何抓取數據?如何解析數據?我們要活學活用,在不同的時候利用最有效的工具去完成我們的目的。

工具是其次,學習不要主末顛倒了,我上面分享的那篇文章也有提到過這個問題(鏈接有放在下方),要明確你學習的最終目的是什麼?

2、lxml的XPath

lxml這個庫同時支持HTML和XML的解析,支持XPath解析方式,解析效率挺高,不過我們需要熟悉它的一些規則語法才能使用。

使用xpath需要從lxml庫中導入etree模塊,還需要使用HTML類對需要匹配的HTML對象進行初始化。

安裝途徑:

Xpath常用表達式

使用表達式定位head和title節點

Xpath謂語常用的表達式

使用謂語定位head和ul節點

定位並獲取title節點內的文本內容

提取ul節點下的所有文本文件和鏈接地址

XPath的解析語法稍顯復雜,不過熟悉了語法的話也不失為一種優秀的解析手段。

示例:

3、requests-html

我們知道 requests 只負責網路請求,不會對響應結果進行解析,因此可以把 requests-html 理解為可以解析 HTML 文檔的 requets 庫。

requests-html 的代碼量非常少,都是基於現有的框架進行二次封裝,開發者使用時可更方便調用,它依賴於 PyQuery、requests、lxml 等庫。

安裝途徑:

需要注意的是這個庫目前只支持python3.6版本;

requests-html 具有以下特性:

requests-html默認使用session保持的請求方式,且其返回內容是一個帶有豐富方法的對象。

獲取一個隨機User-Agent

不用每次在請求頭裡面去復制user-agent;

對JavaScript的支持是requests-html最大的亮點,會用到render函數,需要注意的是第一次使用這個方法,它會先下載Chromium,然後使用Chromium來執行代碼,但是下載的時候可能需要一個梯子,這里就先不展開討論了。

學過requests庫的看到requests-html的api應該會很熟悉,使用方法基本一致,不同的是使用requests編寫爬蟲時,要先把網頁爬取下來,然後再交給BeautifulSoup等一些html解析庫,現在可以直接解析了。

示例:

通過簡短的幾行代碼,就可以把整個首頁的文章抓取下來。

示例中使用的幾個方法:

① find( ) 可以接收兩個參數:

第一個參數可以是class名稱或ID第二個參數first=True時,只選取第一條數據

② text 獲取元素的文本內容

③ attrs 獲取元素的屬性,返回值是個字典

④ html 獲取元素的html內容

使用requests-html來解析內容的好處在於作者都高度封裝過了,連請求返回內容的編碼格式轉換也自動做了,完全可以讓代碼邏輯更簡單直接,更專注於解析工作本身。

4、正則表達式

正則表達式通常被用來檢索、替換那些符合某個模式的文本,所以我們可以利用這個原理來提取我們想要的信息。

使用正則表達式, 需要導入re模塊,該模塊為Python提供了完整的正則表達式功能。

嚴格的字元匹配示例:

注意:python只支持re模塊進行正則表達式的書寫

使用正則表達式查找網頁內容中的title內容:

使用正則表達式無法很好的定位特定節點並獲取其中的鏈接和文本內容,而使用Xpath和Beautiful Soup能較為便利的實現這個功能。

正則就是編寫麻煩,理解不容易,但是匹配效率很高,不過現在有很多現成的HTMl內容解析庫之後,不太推薦再手動用正則來對內容進行匹配了,麻煩費時費力。

5、小結:

(1)正則表達式匹配不推薦,因為已經有很多現成的庫可以直接用,不需要我們去大量定義正則表達式,還沒法復用,嘗試過正則表達式的小白就能體會,使用正則表達式來篩選網頁內容是有多費勁,而且總是感覺效果不太好。

(2)BeautifulSoup是基於DOM的方式,簡單的說就是會在解析時把整個網頁內容載入到DOM樹里,內存開銷和耗時都比較高,處理海量內容時不建議使用。

BeautifulSoup不需要結構清晰的網頁內容,因為它可以直接找到我們想要的標簽,如果對於一些HTML結構不清晰的網頁,它比較適合。

(3)XPath是基於SAX的機制來解析,不會像BeautifulSoup去載入整個內容到DOM里,而是基於事件驅動的方式來解析內容,更加輕巧。

不過XPath要求網頁結構需要清晰,而且開發難度比DOM解析的方式高一點,推薦在需要解析效率時使用。

(4)requests-html 是比較新的一個庫,高度封裝且源碼清晰,它直接整合了大量解析時繁瑣復雜的操作,同時支持DOM解析和XPath解析兩種方式,靈活方便,可以嘗試。

除了以上介紹到幾種網頁內容解析方式之外還有很多解析手段,這里就暫不一一介紹了。

閱讀全文

與解析網頁的常用方法相關的資料

熱點內容
玉蘭油麵霜使用方法視頻 瀏覽:716
分數計算方法圖片 瀏覽:66
華應龍介紹的讀書方法有哪些 瀏覽:587
豆芽怎麼種植方法視頻 瀏覽:621
牙髓炎症狀不治療方法 瀏覽:973
碳元素分析用什麼方法 瀏覽:753
成人排氣的方法和技巧 瀏覽:590
孩子鼻甲肥大有什麼方法 瀏覽:990
熱容膠粘書脊的方法視頻 瀏覽:274
卓立特餌料如何使用方法 瀏覽:806
痤瘡的治療小方法 瀏覽:266
汽車安裝兩台dsp方法 瀏覽:509
迷你世界打狙方法怎麼百發百中 瀏覽:204
冷庫銅管保溫包紮帶方法視頻 瀏覽:560
兩條鐵絲的電線連接方法 瀏覽:570
小米5s顯示桌面時間怎麼設置在哪裡設置方法 瀏覽:498
楊冪玉石鑒別方法 瀏覽:608
抽桿文件夾使用方法 瀏覽:341
鍛煉性能力最有效的方法 瀏覽:7
檢查滅火器的正確方法是 瀏覽:927