如何用BeautifulSoup提取JSON响应中的str_fecha_nacimiento字段
提取嵌套在HTML中的JSON字段str_fecha_nacimiento的方法
直接按以下步骤操作即可提取目标字段:
1. 解析HTML定位JSON文本
先用BeautifulSoup解析响应的HTML内容,定位到存放JSON数据的<pre>标签,提取其中的完整文本。
2. 剥离HTTP响应头,保留纯JSON字符串
提取的文本里包含HTTP响应头信息,找到JSON的起始位置(第一个{),截取后面的内容得到纯JSON字符串。
3. 解析JSON并提取目标字段
示例中的JSON用了单引号,要么替换成双引号用json.loads()解析,要么直接用ast.literal_eval()解析单引号格式的JSON结构,最后通过键路径获取str_fecha_nacimiento字段。
完整代码示例
from bs4 import BeautifulSoup import ast # 你的请求代码(保留原请求逻辑) r = scraper.get('https://nsa.gob.ye/ha/api/scar-doc/01/09090909/', json=payload, headers=headers, cookies=cookies) # 解析HTML内容 soup = BeautifulSoup(r.text, 'html.parser') # 定位到包含JSON数据的pre标签 response_pre = soup.select_one('.response-info pre') full_content = response_pre.get_text() # 截取纯JSON部分(从第一个{开始) json_start_idx = full_content.find('{') json_str = full_content[json_start_idx:] # 解析单引号格式的JSON(无需替换引号,更稳妥) json_data = ast.literal_eval(json_str) # 提取目标字段 fecha_nacimiento = json_data['datos']['data']['str_fecha_nacimiento'] print(fecha_nacimiento) # 输出示例:00/00/0000
内容的提问来源于stack exchange,提问作者AjaxPain
相关产品推荐
相关产品推荐

