python - 抓取非格式化的json
问题描述
我的在线 json 文件就像
data(
[
{
"CCODE": "15ET",
"CNAME": "JOE",
"CAGE": 32
},{
"CCODE": "15ET",
"CNAME": "JOE",
"CAGE": 32
},{
"CCODE": "15ET",
"CNAME": "JOE",
"CAGE": 32
}
]
)
我正在尝试使用 scrapy 来报废它,但由于 json 格式不正确,代码json.loads(response.body_as_unicode())
给出了。JSONDecodeError: Expecting value
有没有解决这个问题的方法。
解决方案
您需要先使用正则表达式从一些 JS 内容中清除它,然后您可以使用json.loads()
:
json_str = re.search( r'data\((.+)\)$', response.body, flags=re.DOTALL).group(1)
data = json.loads(json_str)
更新 对于 Python 3,你需要这样的东西:
json_str = re.search( r'data\((.+)\)$', response.text, flags=re.DOTALL).group(1)
data = json.loads(json_str)
推荐阅读
- java - 是否可以在没有重复值的情况下打印此二维数组?
- html - 网格项不会占用父容器的全高
- c# - AutoMapper 映射一个子列表对象
- html - AngularJS如何保持下拉列表中的选择打开
- java - 具有基于仲裁的同步复制的 JDBC Postgres 故障转移
- java - JAVA NIO 服务器 - 未收到客户端空白消息/部分消息
- php - 为 AJAX 请求并行获取 Apache PHP 响应
- python - 不同长度的熊猫系列
- redux - React-Redux:错误:操作必须是普通对象。使用自定义中间件进行异步操作
- java - 按下向上按钮时如何将数据发送到父活动