python爬虫的一个问题,json.loads()不式转化字符串为dict类型吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫的一个问题,json.loads()不式转化字符串为dict类型吗?相关的知识,希望对你有一定的参考价值。
今天在学爬虫的时候,用了一个data = json.loads()方法,但是用data.keys()的时候报错,提示data式一个str类型,我是看网上说json.loads是将str转化为dict类型,好像出现了偏差。我又尝试用了一遍data2 = json.loads(data),结果才正确,求大神指教。下面附上这一部分代码和那行网页源码,求大神看看我哪里理解错了还是什么。
你看的那个网上解释,不准确的。json.loads是将json对象转成原生对象。。。也就是说,原来是啥对象,就能给你转出来。只是数据类型,json只支持str类型。如果你原来的对象是dict类型,当然可以用data.keys()方法。但既然错误提示你的事原来的对象是str。。。 参考技术A 我也遇到了相同的问题,我是从本地文件读取出来的json数据格式的数据,然后通过json.load()想转成dict类型的数据,结果我把转完之后的数据当成dict处理的时候也是有相同的报错,后来用eval()再转了一遍,就好了。 但是不知道问题出在哪里 参考技术B 换成load方法试试(不要s)追问
多谢回答,可是不行,出现了新的错误。
先测试下参数类型:
g1 = result.group(1)print(type(g1))#类型
print(g1)#如果内容不长再输出内容看是什么样 参考技术C 我也在学习这个内容,遇到了相同的问题,我想了一下,大概是这样的:
本质上,result.group(1)为一个二重数据字典,在仅仅进行过一次json.loads处理结果仍为一个<class str>的数据,所以要进行两次的json.loads处理。
爬虫基础知识五
数据提取方法一
利用json
- 数据交换格式,看起来像python类型(列表,字典)的字符串
- 使用json之前需要导入 import json
- 哪里会返回json的数据
- 浏览器切换到手机版
- 抓包app
- json.loads
- 把json字符串转换为python类型
- json.loads(json字符串)
- json.dumps
- 把python类型转化为json字符串(用于保存数据到文本中)
- json.dumps()
- json.dumps(ret,ensure_ascii=False,indent=2)
- ensure_ascii:让中文显示成中文
- indent:能够让下一级在上一级的基础上空格几个
数据提取方法二
利用xpath
- xpath
- 一门从html中提取数据的语言
- xpath语法
- xpath helper插件:帮助我们从elments中定位数据
- 1.选择节点(标签)
- /html/head/meta:能够选中html下的所有的meta标签
- 2.//:能够从任意节点开始选择
- //li :当前页面上所有的li标签
- /html/head//link :head下的所有的link标签
- 3.@符号的用途
- 选择具体的某个元素://div[@class=‘feed‘]/ul/li
- 选择class=‘feed’的div下的ul下的li
- a/@href:选择a的href的值
- 选择具体的某个元素://div[@class=‘feed‘]/ul/li
- 4.获取文本:
- /a/text():获取a下的文本
- /a//text():获取a下的所有的文本
- 5.点前
- ./a:当前节点下的a标签
- lxml
- 安装:pip install lxml
- 使用
from lxml import etree element=etree.HTML("html字符串") element.xpath("")
以上是关于python爬虫的一个问题,json.loads()不式转化字符串为dict类型吗?的主要内容,如果未能解决你的问题,请参考以下文章