如何用BeautifulSoup提取div的data-page/data-v-app中的键值对?
提取data-page属性中的键值对方案
直接给你实操步骤和代码,照着来就行:
- 第一步:定位目标div标签
用BeautifulSoup筛选同时带有data-page和data-v-app属性的div,代码如下:
from bs4 import BeautifulSoup import json import re # 假设你已经通过requests等工具拿到了页面源代码,存在html变量里 soup = BeautifulSoup(html, 'html.parser') # 精准定位目标div target_div = soup.find('div', attrs={'data-page': True, 'data-v-app': True})
- 第二步:提取并处理非标准JSON内容
拿到data-page的属性值后,因为它不是标准JSON,得先做格式修正:
# 取出属性内容 raw_data = target_div.get('data-page') # 处理常见的非标准格式问题:单引号转双引号、给无引号的键加双引号、去掉末尾多余逗号 processed_data = re.sub(r"'", '"', raw_data) processed_data = re.sub(r'(\w+):', r'"\1":', processed_data) processed_data = re.sub(r',\s*([}\]])', r'\1', processed_data)
- 第三步:转成字典并提取所需键值对
把处理好的字符串转成Python字典,之后就能随便取你要的键值对了:
try: data_dict = json.loads(processed_data) # 示例:提取你需要的键,比如'page'和'params' result = { 'page_name': data_dict.get('page'), 'params': data_dict.get('params') } print(result) except json.JSONDecodeError as e: print(f"解析失败,错误信息:{e}") # 打印处理后的内容排查问题 print("处理后的内容:", processed_data)
如果遇到特殊格式的非标准JSON(比如带注释),可以用容错性更高的demjson库,安装后替换解析步骤即可:
pip install demjson
import demjson data_dict = demjson.decode(processed_data)
内容的提问来源于stack exchange,提问作者Spykerwolf
相关产品推荐
相关产品推荐

