
在网页抓取任务中,我们经常遇到需要从html页面中提取特定数据的情况。对于那些以“键:值”形式(如"isrc":"gb-ffm-19-0853")存在的数据,它们往往不是标准的html元素(如<div>、<span>),而是以json格式嵌入在页面的<script>标签内部。在这种情况下,传统的selenium元素定位方法(如通过id、类名、xpath、css选择器直接查找数据本身)通常会失败,因为这些数据并非独立的dom元素,而是作为javascript代码或数据结构的一部分存在。
要解决这个问题,我们需要改变策略:首先定位包含这些JSON数据的<script>标签,然后提取该标签的文本内容,最后将其解析为Python可操作的数据结构。
从HTML页面中抓取嵌入式JSON数据主要分为以下几个步骤:
以下代码演示了如何从指定网页中提取嵌入在<script>标签内的JSON数据,并获取其中的isrc值。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json
import time
# 初始化WebDriver
# 确保您的ChromeDriver路径正确配置,或者ChromeDriver已添加到系统PATH中
driver = webdriver.Chrome()
try:
# 导航到目标URL
target_url = "https://www.audionetwork.com/browse/m/track/purple-beat_1008534"
driver.get(target_url)
# 等待页面加载完成,这里可以根据实际情况等待特定的元素出现
# 例如,等待body标签加载,或者等待某个关键元素出现
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.TAG_NAME, "body"))
)
# 定位包含JSON数据的<script>标签
# 在本例中,目标JSON位于body内的第一个script标签
# 注意:这个XPath可能因网站结构变化而需要调整
script_element = driver.find_element(By.XPATH, "/html/body/script[1]")
# 提取script标签的innerHTML内容
json_content_str = script_element.get_attribute('innerHTML')
# 将JSON字符串解析为Python字典
content_as_dict = json.loads(json_content_str)
# 根据JSON结构访问所需数据
# 这里的路径 'props' -> 'pageProps' -> 'track' -> 'isrc' 是根据目标网站的JSON结构确定的
isrc_value = content_as_dict['props']['pageProps']['track']['isrc']
print(f"成功提取到 ISRC 值: {isrc_value}")
except Exception as e:
print(f"发生错误: {e}")
finally:
# 关闭浏览器
driver.quit()为了使上述方法更具通用性并提高其鲁棒性,请考虑以下几点:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
立即学习“前端免费学习笔记(深入)”;
通过本教程,您应该已经掌握了使用Selenium从HTML页面中提取嵌入式JSON数据的核心技术。关键在于识别数据并非标准的HTML元素,而是作为字符串存在于<script>标签中。通过定位这些脚本标签、提取其文本内容,并利用Python的json模块进行解析,我们可以有效地访问这些隐藏的数据。在实际应用中,结合健壮的元素定位策略、详细的JSON结构分析和完善的错误处理,将使您的网页抓取任务更加高效和稳定。
以上就是使用Selenium从HTML页面抓取嵌入式JSON数据的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号