首页 > 解决方案 > 抓取非格式化的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有没有解决这个问题的方法。

标签: pythonjsonscrapy

解决方案


您需要先使用正则表达式从一些 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)

推荐阅读