Beautiful Soup - 頁面解析



現在,我們將在其中一個 html 頁面中測試我們的 Beautiful Soup 包(以網頁 https://tutorialspoint.tw/index.htm 為例,您可以選擇任何其他網頁)並從中提取一些資訊。

在下面的程式碼中,我們嘗試從網頁中提取標題 -

示例

from bs4 import BeautifulSoup
import requests


url = "https://tutorialspoint.tw/index.htm"
req = requests.get(url)

soup = BeautifulSoup(req.content, "html.parser")

print(soup.title)

輸出

<title>Online Courses and eBooks Library<title>

一個常見的任務是從網頁中提取所有 URL。為此,我們只需要新增以下程式碼行 -

for link in soup.find_all('a'):
   print(link.get('href'))

輸出

以下是上述迴圈的部分輸出 -

https://tutorialspoint.tw/index.htm
https://tutorialspoint.tw/codingground.htm
https://tutorialspoint.tw/about/about_careers.htm
https://tutorialspoint.tw/whiteboard.htm
https://tutorialspoint.tw/online_dev_tools.htm
https://tutorialspoint.tw/business/index.asp
https://tutorialspoint.tw/market/teach_with_us.jsp
https://#/tutorialspointindia
https://www.instagram.com/tutorialspoint_/
https://twitter.com/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://tutorialspoint.tw/categories/development
https://tutorialspoint.tw/categories/it_and_software
https://tutorialspoint.tw/categories/data_science_and_ai_ml
https://tutorialspoint.tw/categories/cyber_security
https://tutorialspoint.tw/categories/marketing
https://tutorialspoint.tw/categories/office_productivity
https://tutorialspoint.tw/categories/business
https://tutorialspoint.tw/categories/lifestyle
https://tutorialspoint.tw/latest/prime-packs
https://tutorialspoint.tw/market/index.asp
https://tutorialspoint.tw/latest/ebooks
…
…

要解析當前工作目錄中本地儲存的網頁,請獲取指向 html 檔案的檔案物件,並將其用作 BeautifulSoup() 建構函式的引數。

示例

from bs4 import BeautifulSoup

with open("index.html") as fp:
    soup = BeautifulSoup(fp, 'html.parser')

print(soup)

輸出

<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1 style="text-align:center;">Hello World</h1>
</body>
</html>

您還可以使用包含 HTML 指令碼的字串作為建構函式的引數,如下所示 -

from bs4 import BeautifulSoup

html = '''
<html>
   <head>
      <title>Hello World</title>
   </head>
   <body>
      <h1 style="text-align:center;">Hello World</h1>
   </body>
</html>
'''
soup = BeautifulSoup(html, 'html.parser')

print(soup)

Beautiful Soup 使用最佳可用的解析器來解析文件。除非另有指定,否則它將使用 HTML 解析器。

廣告