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

Barbara Streisand
发布: 2024-10-19 07:45:02
原创
541 人浏览过

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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!