首页  >  文章  >  后端开发  >  Python 如何从动态生成的 HTML 内容中检索值?

Python 如何从动态生成的 HTML 内容中检索值?

Barbara Streisand
Barbara Streisand原创
2024-10-19 07:45:02543浏览

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