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

使用Python+BeautifulSoup抓取HTML转JSON遇TypeError求助

请你提供需要使用Markdown格式化的具体内容,我会按照你给出的规则进行处理。


如果是针对你之前的爬虫问题,以下是符合格式要求的解决方案:

问题解决:抓取指定元素文本并转为JSON

错误原因

soup.findAll()返回的是ResultSet对象(类列表的元素集合),而json.loads()仅能处理字符串、字节类JSON格式内容,直接传入ResultSet必然触发类型错误。另外你需要的是纯文本内容,而非HTML结构,需先提取文本再转JSON。

修正后的代码

import requests
from bs4 import BeautifulSoup
import json

URL = "https://quranromanurdu.com/chapter/1"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")
# id唯一,用find()直接获取单个元素更高效
content_div = soup.find('div', attrs={"id": "contentpara"})

# 提取div内纯文本,去除冗余空白并保留换行
content_text = content_div.get_text(strip=True, separator='\n')

# 将文本包装为字典(JSON可序列化结构)
data = {"chapter_content": content_text}

# 转为JSON字符串,ensure_ascii=False保证乌尔都语文本正常显示
json_result = json.dumps(data, ensure_ascii=False, indent=2)
print(json_result)

关键修改说明

  • 替换findAll()为find():HTML中id属性唯一,直接获取单个元素更合理。
  • 提取纯文本:用get_text()获取元素内的文本内容,而非保留HTML结构。
  • 构建可序列化结构:将文本放入字典,因为JSON仅支持特定Python类型(dict、list、str等)的序列化,包装后结构更清晰。
  • 用json.dumps()替代json.loads():loads()是解析JSON字符串为Python对象,dumps()是将Python对象转为JSON字符串,此处需要后者。

内容的提问来源于stack exchange,提问作者Arbaz ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:30:53