如何用BeautifulSoup提取div中的minEnroll字段数据?
无需Selenium,用BS4提取data属性中的JSON数据
不用纠结Selenium,纯BS4就能搞定,步骤很直接:
- 先定位到目标div,获取包含JSON的data属性值
- 用Python的
json模块把属性值字符串转成字典 - 直接从字典里取出
minEnroll字段
具体代码示例
假设你的HTML结构类似这样:
<div class="target-div" data-course-details='{"courseId": "CS101", "enrollRules": {"minEnroll": 0, "maxEnroll": 40}, "teacher": "John Doe"}'></div>
对应的Python代码:
from bs4 import BeautifulSoup import json # 假设你已经获取了页面的HTML内容,存在html变量中 soup = BeautifulSoup(html, 'html.parser') # 定位目标div(根据你的实际class或其他属性调整) target_div = soup.find('div', class_='target-div') # 获取data属性的值(这里是data-course-details,根据实际属性名修改) json_str = target_div.get('data-course-details') # 把JSON字符串转成Python字典 course_data = json.loads(json_str) # 提取minEnroll,如果是嵌套结构就按层级取 min_enroll = course_data['enrollRules']['minEnroll'] print(min_enroll) # 输出:0
注意事项
- 确保data属性的内容是合法的JSON格式(比如字符串用双引号,键名也是双引号),如果遇到单引号的情况,可以先把单引号替换成双引号再转JSON
- 如果目标div有多个,用
find_all遍历处理即可
内容的提问来源于stack exchange,提问作者Baran Üyükuş
相关产品推荐
相关产品推荐

