Python爬虫过程中json格式转化问题

爬虫json格式化问题

问题导入

在进行python爬取网页上的数据时,遇到类型转化问题导致数据获取失败,具体如下:
代码部分:

url2 = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=nowConfirmStatis,provinceCompare"
html2 = requests.get(url2)
data2 = json.loads(html2.json()["data"])
data2

报错内容:

TypeError: the JSON object must be str, bytes or bytearray, not dict

通过搜寻相关文档,对json有了初步的了解之后,成功解决了问题。

json相关内容

json表示数据的两种方式

  • Object(对象):键/值对(名称/值)的集合,使用花括号{ }定义。在每个键/值对中,以键开头,后跟一个冒号:,最后是值。多个键/值对之间使用逗号,分隔,如{“name”:“Yoz”,“age”:“18”};
  • Array(数组):值的有序集合,使用方括号[ ]定义,数组中每个值之间使用逗号,进行分隔。

在python中对json的使用主要有以下两个函数:

  • json.dumps():将 Python 对象转换为 JSON 数据
  • json.loads():将 JSON 数据解析为 Python 对象

解决方法

从报错内容上来看,很清晰说明了,由于使用的loads函数中的对象是字典类型,而json.loads()中数据类型必须为json数据,所以考虑将字典类型转换为str类型,使用dumps()可解决

url2 = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=nowConfirmStatis,provinceCompare"
html2 = requests.get(url2)
strdata = json.dumps(html2.json()["data"])
data2 = json.loads(strdata)
data2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值