最近老是和json打交道,作为通过键值对保存数据的有效方式,json确实很好用,今天写一个爬虫的时候,需要提取

……

File "F:\LynWinTENsoft\Anaconda1014\lib\json\__init__.py", line 354, in loads

return _default_decoder.decode(s)

File "F:\LynWinTENsoft\Anaconda1014\lib\json\decoder.py", line 339, in decode

obj, end = self.raw_decode(s, idx=_w(s, 0).end())

File "F:\LynWinTENsoft\Anaconda1014\lib\json\decoder.py", line 355, in raw_decode

obj, end = self.scan_once(s, idx)

JSONDecodeError: Expecting property name enclosed in double quotes

输入的字符串astr如下,仔细观察发现这个json的键的部分没有用引号括起来,locallist应该是"locallist"。网上查了一些解决方案,试着用第三方库demjson,在Python 3.6环境下没能正确安装。于是选择了自己写代码解决,给键的部分加上双引号(因为拿下来的json里面有单引号也有可能引发JSONDecodeError: Expecting property name enclosed in double quotes:;因此选择把所有的单引号替换为双引号)

{

locallist: [{

dispid: '1',

listname: "bj"

}, {

dispid: '1145',

listname: "shijingshan"

}, {

dispid: '6065',

listname: "lugu"

}],

infoid: "13",

lat: "39.908149",

lon: "116.24602",

comListname: "yuanyangshanshuibeiqu",

im: "//j1.58cdn.com.cn/webim/js/entry_v20180521144825.js"

}

思路就是通过字符串的replace方法将一些特征位置的值替换为有双引号的值,当然也可以用正则实现,单需要生成新字符串,这里只用了replace。把这部分封装为函数,输入为一个json字符串,代码如下:

def jsonPropt(astr):#给json内的键加上双引号

return astr.replace(' ','').replace('\n','').replace('\r','')\

.replace("'",'"').replace('{','{"').replace(':','":')\

.replace('],','],"').replace('",','","')

直接json.loads(astr)会报JSONDecodeError;经过jsonPropt()处理后能正常解析为json。

程序运行效果

python提示jsondecodeerror是什么意思_Python爬虫解析json遇到一类JSONDecodeError的解决方案...相关推荐

  1. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  2. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  3. python selenium 进入新标签页_python 爬虫之selenium可视化爬虫

    文章目录 前文回顾 快速入门 元素定位 页面操作 等待方式 扩展程序加载 点击此处,获取海量Python学习资料! 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的 ...

  4. python教程app 小米应用商店_Python爬虫过程解析之多线程获取小米应用商店数据...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT共享之家 ,作者IT共享者 前言 小米应用商店给用户发现最好的安卓应用和游戏,安 ...

  5. python爬取数据的原理_Python爬虫原理

    前言 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什 ...

  6. python提示jsondecodeerror是什么意思_python中报错json.decoder.JSONDecodeError: Expecting value:的解决...

    在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed ...

  7. python fastapi 获取所有header信息_Python爬虫实战五之模拟登录淘宝并获取所有订单...

    点击上方[Python与人工智能社区]→右上角[...]→[设为星标⭐] 经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家 ...

  8. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  9. python爬虫源码怎么使用_Python爬虫具体应该怎么使用?

    1.首先,什么时候我们需要爬虫呢? 当我们需要某网站上的海量数据的时候,会发现,如果人工去把几百页,每页几十条到几百条的数据一条一条地复制下来,就太费时费力了,甚至根本就不可能.但是你做研究却需要这样 ...

  10. python爬取新闻后提炼_Python爬虫开发的3大难题,别上了贼船才发现,水有多深...

    写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上 ...

最新文章

  1. 原生js设置div隐藏或者显示_JS实现“隐藏与显示”功能(多种方法)
  2. Linux RPM 常用命令
  3. golang匿名组合
  4. Python技术基础知识点:OS模块的应用
  5. TIOBE 6月排行:C# 以微弱的优势超过了 Visual Basic .NET 的排名,再次进入 TOP 5
  6. 晨读,难道只是为了完成任务而读的吗?
  7. flex 颜色16进制对照表
  8. 瑞芯微和全志哪个好_瑞芯微和全志科技基本面信息简要对比和整理
  9. 服务器串口协议,基于TCPIP协议串口通信服务器设计说明.docx
  10. 一键安装Tengine服务器,TengineRPM(LTMP)构建高效、稳定、安全、易用的Web平台
  11. 我的听歌神器--网易云
  12. Linux服务器网卡驱动安装及故障排除
  13. 前馈神经网络——神经元
  14. 融资2500万美元,#Spatial从协作办公进化到元宇宙产品,#NFT创作生态
  15. Minimum supported Gradle version is 5.1.1. Current version is 4.8
  16. shim和polyfill
  17. Openwrt Web gui LUCI 流程浅析
  18. [Learn Android Studio 汉化教程]Reminders实验:第一部分(续)
  19. A-Frame使用方法 教程 API
  20. FFmpeg创作GIF表情包教程来了!赶紧说声多谢乌蝇哥?

热门文章

  1. 创客教育中常见的视觉识别摄像头介绍
  2. Ubuntu 18.04上跑通LSD SLAM
  3. IPv6路由信息的序号
  4. 技术人,一定要保持一颗有空就学习的心。
  5. 微信小程序无法看视频
  6. 最新二开微信表情包小程序+前后端 【去授权版】
  7. MySQL学习2:表的创建和增删改
  8. hosts文件位置及作用
  9. 雷速体育Canvas文字加密逆向总结
  10. nodejs websocket 聊天应用