您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用BeautifulSoup怎么解析html,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
爬蟲抓取的數據以html數據為主。有時也是xml數據,xml數據對標簽的解析和html是一樣的道理,兩者都是<tag>來區分數據的。這種格式的數據結構可以說是一個頁面一個樣子,解析起來很麻煩。BeautifulSoup提供了強大的解析功能,可以幫助我們省去不少麻煩。使用之前安裝BeautifulSoup和lxml。
#pip install beautifulsoup4==4.0.1 #指定版本,不指定會安裝最新版本#pip install lxml==3.3.6 指定版本,不指定會安裝最新版本進入Python命令行試試是否安裝成功>>> import bs4>>> import lxml>>>
沒有報錯,說明安裝成功。lxml的版本和發布時間可以到下面網站查看
首先代碼要引入這個庫
from bs4 import BeautifulSoup
然后,抓取
try: r = urllib2.urlopen(request)except urllib2.URLError,e: print e.code exit() r.encoding='utf8'print r.codehtml=r.read() #urlopen獲取的內容都在html中mysoup=BeautifulSoup(html, 'lxml') #html的信息都在mysoup中了
假設我們對html中的如下部分數據感興趣
<data> <day>20200214</day> <id>1</id> <rank>11</rank> <name>張三</name> </data> <data> <day>20200214</day> <id>4</id> <rank>17</rank> <name>李四貨</name> </data>
首先要找到tag標簽為<data>的數據,而這類數據不止一條,我們以兩條為例。那么需要用到beautifulsoup的find_all函數,返回的結果應該是兩個<data>數據。當處理每一個<data>數據時,里面的<id><name>等標簽都是唯一的,這時使用find函數。
mysoup=BeautifulSoup(html, 'lxml')data_list=mysoup.find_all('data')for data in data_list:#list應該有兩個元素 day = data.find('day').get_text() #get_text是獲取字符串,可以用.string代替 id = data.find('id').get_text() rank = data.find('rank').get_text() name = data.find('name').get_text() #print name 可以print測試解析結果
這是beautifulsoup最簡單的用法,find和find_all不僅可以按照標簽的名字定位元素,還可以按照class,style等各種屬性,以及文本內容text作為條件來查找你感興趣的內容,非常強大。
關于使用BeautifulSoup怎么解析html就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。