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的值
    • 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类型吗?的主要内容,如果未能解决你的问题,请参考以下文章

Python 爬虫 返回json内容

爬虫实战1

python爬虫实例王者英雄资料爬取

python爬虫实例王者英雄资料爬取

python学习笔记--有道翻译爬虫

爬虫json数据的处理