You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Selenium和BeautifulSoup提取get_attribute_list指定字段值

解决方案:提取Position、Brand和Price字段值

看起来你已经通过BeautifulSoup拿到了包含电商数据的JSON字符串,接下来只需要把这个JSON字符串解析成Python字典,就能轻松提取你要的字段了。下面结合Selenium和BeautifulSoup给出完整的实现方案:

完整代码示例(结合Selenium动态加载页面)

from selenium import webdriver
from bs4 import BeautifulSoup
import json

# 初始化Chrome浏览器(确保已安装对应版本的chromedriver)
driver = webdriver.Chrome()
# 访问目标页面
driver.get("你的目标页面URL")

# 获取页面源码并交给BeautifulSoup解析
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'html.parser')

# 定位目标div元素
target_div = soup.find('div', {'id': 'comparisonTabs1'})
# 获取包含JSON数据的属性值
json_str_list = target_div.get_attribute_list('data-js-gtminfo')

# 解析JSON并提取字段
if json_str_list:
    # 将JSON字符串转换为Python字典
    data_dict = json.loads(json_str_list[0])
    # 逐层定位到第一个产品数据
    product = data_dict['Ecommerce']['Detail']['Products'][0]
    
    # 提取需要的字段
    position = product['Position']
    brand = product['Brand']
    price = product['Price']
    
    # 输出结果
    print(f"Position: {position}")
    print(f"Brand: {brand}")
    print(f"Price: {price}")

# 关闭浏览器
driver.quit()

关键步骤解释

  • Selenium加载页面:如果目标页面是动态渲染的,用Selenium可以确保获取到完整的页面源码,这比requests更适合处理这类场景。
  • 解析JSON数据:get_attribute_list返回的是一个包含JSON字符串的列表,我们先取出第一个元素,再用json.loads()把它转换成Python字典,这样就能通过键名直接访问对应的值。
  • 字段提取:从字典里逐层导航到Products列表的第一个元素,然后直接提取Position、Brand和Price字段即可。

如果你已经拿到了JSON字符串(简化版)

如果你的现有代码已经成功获取到comparisonTabs1数据,也可以跳过Selenium部分,直接解析JSON:

import json

# 假设这是你已获取到的comparisonTabs1数据
comparisonTabs1 = ['{"Event":"productDetail","EventCategory":"Ecommerce","EventAction":"Product detail","EventLabel":"","Ecommerce":{"Detail":{"ActionField":{"List":"consument/vergelijker"},"Products":[{"Id":3211,"Name":"1 jaar Vast","Price":1600.45,"Brand":"Google","Position":1,"Category":"consument","Variant":"","List":"consument/vergelijker","Dimension10":222.0,"Dimension11":12,"Dimension12":"nee","Dimension13":6.9}]}}}']

if comparisonTabs1:
    data_dict = json.loads(comparisonTabs1[0])
    product = data_dict['Ecommerce']['Detail']['Products'][0]
    
    print(f"Position: {product['Position']}")
    print(f"Brand: {product['Brand']}")
    print(f"Price: {product['Price']}")

内容的提问来源于stack exchange,提问作者Michel Oosterman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:24:49