爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第1張

BeautifulSoup是python的一個解析、遍歷、維護網頁文檔「標簽」的功能庫模塊,其主要功能是從連接的網站上通過解析文檔抓取網頁數據。BeautifulSoup模塊提供了一些功能函數用來處理導航、搜索、修改分析樹等。

BeautifulSoup模塊使用時不需要考慮編碼方式,它自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。

01

安裝BeautifulSoup模塊

BeautifulSoup模塊不是Pyton系統自帶模塊,因此,在使用前必須用pip安裝該模塊。用pip安裝BeautifulSoup模塊的命令如下:

pip installbeautifulsoup4

安裝結果如圖9.4所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第2張

圖9.4 安裝BeautifulSoup模塊

02

BeautifulSoup模塊的基本元素

BeautifulSoup模塊的基本元素如表9-2所示。

表9-2 BeautifulSoup模塊的基本元素

03

HTML標簽及標簽樹

1

標簽

HTML文檔的語句稱為標簽,例如:

2

「標簽樹」

在解析網頁文檔的過程中,需要應用BeautifulSoup模塊對HTML內容進行遍歷。

設有如下的一個HTML文檔:

<html>

<head>

….

</head>

<body>

<pclass=”title”>The demo Python Project. </p>

<pclass=”course”>Python is a programming language.

<ahref=”http://www.icourse163.com”>Basic Python </a>

<ahref=”http:..www.python.org”>Advanced Python </a>

</p>

</body>

</html>

將其文檔標簽繪成樹形結構,該結構稱為「標簽樹」,如圖9.5所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第3張

圖9.5 「標簽樹」

04

BeautifulSoup模塊對網頁頁面元素定位方法

設定義BeautifulSoup模塊解析器對象為soup,則按網頁頁面中的標簽元素進行定位的方法如表9-3所示。

表9-3 BeautifulSoup模塊對象的常用資訊提取方法

1

通過標簽名定位

例:設有HTML文檔的代碼如下

<table>

<td>apple </td>

<td>banana </td>

<table>

soup.find( “td”) # 返回第一個「<td></td>」節點

soup.find_all( “td”) # 返回所有的「<td></td>」節點

2

通過標簽屬性定位

例:設有HTML文檔的代碼如下

<table>

<tdname=”fruit”>apple </td>

<tdname=”fruit”>apple </td>

</table>

soup.find(name= “fruit”) # 返回第一個「<td></td>」節點

soup.find_all(name= “fruit”) # 返回所有的「<td></td>」節點

3

通過標簽名+屬性定位

例:設有HTML文檔的代碼同(2),則

soup.find( “td”,{ “name”: “fruit”}) # 返回第一個「<td></td>」節點

soup.find_all( “td”,{ “name”: “fruit”}) # 返回所有的「<td></td>」節點

4

通過text定位

例:設有HTML文檔的代碼同(2),則

soup.find(text= “apple”) # 返回第一個「<td></td>」節點

05

應用範例

【例9-3】 爬取某電影網站最新電影資訊。

打開某電影網站:

https://movie.douban.com/cinema/nowplaying/xiamen/

其頁面如圖9.6所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第4張

圖9.6 某電影網站

1

獲取網站頁面的HTML代碼

url = “https://movie.douban.com/cinema/nowplaying/xiamen/”

headers = {

“USER-Agent”: UserAgent.chrome

}

req = request.Request(url, headers = headers)

resp = request.urlopen(req)

html_data=resp. read.decode

print(html_data)

2

創建解析器對象

在瀏覽器按下F12鍵進入調試頁面。在調試頁面的代碼中,當滑鼠停留在某代碼行時,左邊網頁頁面需要選中的欄目板塊被灰色覆蓋,如圖9.7所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第5張

圖9.7在瀏覽器按下F12鍵進入調試頁面

在調試頁面的代碼中,找到電影名稱,如圖9.8所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第6張

圖9.8 調試頁面中電影名稱等資訊

從圖9.6中可以看到,電影名稱等資訊放在<div id = 「upcoming」>區域塊中,其中標簽<li class=「list-item」>顯示具體資訊內容。

因此,可以使用解析器對象對其標簽屬性進行定位:

soup= bs(html_data, “html.parser”) # 構建一個解析器

nowplay1= soup.find_all( “div”, id= “nowplaying”)

nowplay2= nowplay1[ 0].find_all( “li”, class_ = “list-item”)

3

通過循環,解析出所有電影名稱資訊

foritem in nowplay2:

nowplay_dict[ ‘id’] = item[ ‘id’]

nowplay_dict[ ‘name’] = item[ ‘data-title’]

nowplay_list. append(nowplay_dict)

4

完整程序如下

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第7張

程序運行結果如圖9.9所示。

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第8張

圖9.9 爬取某電影網站最新電影名稱

06

視訊講解

07

參考書籍

Python程序設計案例教程——從入門到機器學習(第2版)(微課版)

ISBN:9787302567691

作者:張思民

定價:49.8元

爬取某電影網站最新電影資訊——解析網頁的BeautifulSoup模塊 科技 第9張

08

精彩推薦

  • 鯤鵬架構入門與實戰︱鯤鵬應用遷移(附代碼)

  • 《機器學習》實驗指導書(附實驗參考+代碼)

  • Python爬蟲綜合實戰 │ 創建雲起書院爬蟲(附代碼)

  • Python爬蟲實戰 │ Email提醒(附代碼)

  • Python深度學習 │一文掌握卷積神經網路

  • Python邊做邊學︱商品列表資訊爬取(附代碼)

  • P ython爬蟲實戰│狀態521網頁的爬取

  • Python爬蟲實戰│爬取天氣數據的實例詳解(附源碼)

  • Python實訓:用貪婪算法分析業務員路徑問題|附源碼

鯤鵬架構入門與實戰︱鯤鵬應用遷移(附代碼)

《機器學習》實驗指導書(附實驗參考+代碼)

Python爬蟲綜合實戰 │ 創建雲起書院爬蟲(附代碼)

Python爬蟲實戰 │ Email提醒(附代碼)

Python深度學習 │一文掌握卷積神經網路

Python邊做邊學︱商品列表資訊爬取(附代碼)

P ython爬蟲實戰│狀態521網頁的爬取

Python爬蟲實戰│爬取天氣數據的實例詳解(附源碼)

Python實訓:用貪婪算法分析業務員路徑問題|附源碼

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!