python 解析網頁資料的幾種方法簡介

2021-06-10 06:49:24 字數 3753 閱讀 8944

工作中經常與資料打交道,去網上抓取資料也成了家常便飯。以前就準備抽空總結下的。

最近剛好看到 

上這篇文章有人問到了,

而且下面有熱心pythoner 已經回答了,特此整理下,以備忘。

問題:現在要抓取一批頁面,並將指定標籤裡面的資料抓取出來,如何做到通用性好,穩定可用?

1、使用第三方庫:mechanize

對於mechanize的詳細使用,參考  2、

使用第三方庫:

beautiful soup 

擴充套件包來解析

1importurllib

2frombs4importbeautifulsoup

3content=urllib.urlopen().read()

4soup=beautifulsoup(content)

5printsoup.find('title').string

對於beautiful soup的詳細使用,參考  3、

使用第三方庫:

lxml

擴充套件包來解析

1fromlxmlimporthtml

2doc=html.parse()

3title=doc.find('.//title').text

4printtitle

4、直接使用正則來解析:

1importurllib

2importre

3url=

4html=urllib.urlopen(url).read()

5m=re.findall(r"(.*)", html)

6printm[0]

有關python正則的使用請見《python正規表示式操作指南》 

注:

以上幾種方法中,推薦優先使用前 3 

種,或者有其它優秀的第三方庫你也可以嘗試。

之所以不推薦最後的正則解析原因有2:

(1)html存在一些標籤不規範的場景,如,

>, 等可以單獨出現,不用配對出現,

你可以簡單的認為他的語法非常靈活,不像 xml 那樣限制的很

嚴格,之所以瀏覽器能解析是因為

瀏覽器背後做了許多不為人知的解析

工作,如果你要用正則來做,你也需要考慮很多情況,

而且通用性也會大打折扣。

這也是建議你選擇第三方庫的主要原因。

(2)直接用正則這麼解析,在面對複雜的抓取的時候,正則的效能會是嚴重的瓶頸。

python 抓取網頁資料

利用python進行簡單的資料分析 1 首先要進行分析網頁的html,我們所要抓取的資料是根據銷量排名的手機資訊,所以主要需要抓取手機的型號 銷量,按照 由小見大 的方法來獲取所需要的html資訊,如下圖所示 由上可以看出手機型號所在的html標籤是 h3 手機 是在div中的class屬性為 pr...

python爬取網頁資料

import refrom urllib.request import urlopen 爬取網頁資料資訊 def getpage url response urlopen url return response.read decode utf 8 defparsepage s ret re.find...

網路爬蟲之網頁資料解析(XPath)

xpath定義 xpath表示式 lxml庫 xpath案例 引入有人說,我正則用的不好,處理html文件很累,有沒有其他的方法?有!那就是xpath,我們可以先將網路獲取的string型別資料轉換成 html xml文件,然後用 xpath 查詢 html xml 節點或元素。什麼是xml 大家都...