首頁  >  文章  >  後端開發  >  Python 如何從動態產生的 HTML 內容中檢索值?

Python 如何從動態產生的 HTML 內容中檢索值?

Barbara Streisand
Barbara Streisand原創
2024-10-19 07:45:02545瀏覽

How Can Python Retrieve Values from Dynamically Generated HTML Content?

如何使用Python 從動態HTML 內容中擷取值

當嘗試從動態載入內容的網站擷取資料時,傳統方法使用Python的請求或BeautifulSoup 庫可能會失敗。這是因為這些函式庫不會解釋產生資料的 JavaScript 程式碼。

理解問題

在提供的範例中,相關頁面使用 Handlebars 範本來建立動態內容。使用瀏覽器的開發者工具檢查 HTML 原始碼時,您可能會發現類似「{{formatPricemedian}}」的範本佔位符,而不是實際值。

解決方案

要從動態產生的內容中檢索實際值,您需要使用解釋 JavaScript 的技術。考慮以下選項:

  • 直接解析 AJAX JSON:如果透過 AJAX 請求獲取數據,您可以攔截並解析 JSON 回應。
  • 使用離線 JavaScript 解釋器:安裝並使用 SpiderMonkey 或 Crowbar 等工具來執行 JavaScript 程式碼並產生 DOM 元素。
  • 使用瀏覽器自動化工具:利用驅動程式像 Selenium 或 Watir 一樣與無頭瀏覽器交互,執行 JavaScript 並存取渲染的 HTML。

將Selenium 與BeautifulSoup 結合使用

範例頁( eve-central.com),使用Selenium 擷取「中位數」值:

<code class="python">from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://eve-central.com/home/quicklook.html?typeid=34')

html = driver.page_source
soup = BeautifulSoup(html)

for tag in soup.find_all('span', class_="a-price-amount"):
    print(tag.text)</code>

此程式碼使用Selenium 載入頁面,使用BeautifulSoup 解析渲染的HTML,提取具有特定類別ID 的標籤和列印其文字內容,其中包括所需的「中位數」值。

以上是Python 如何從動態產生的 HTML 內容中檢索值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn