【问题标题】:JSONDecodeError: Expecting ',' delimiter: PythonJSONDecodeError:期望','分隔符:Python
【发布时间】:2020-10-12 07:14:59
【问题描述】:

我无法读取我应该从以下代码中获取的 json 文件:

    
page=requests.get("https://ffcv.es/ncompeticiones/server.php?action=getEquipo&tmp=2019/2020&id=0202644811&cmp=1294", headers=headers)

data=page.json()

我收到错误的 json 对象部分如下:

"googleMaps":"https://www.google.es/maps/place/Campo+Municipal+"Olimpic"+De+Onda/@39.9657111,-0.2621533,14z/data=!4m8!1m2!2m1!1scampo+de+futbol+calle+cirat+Onda!3m4!1s0x0:0xa61fd64366a15e5f!8m2!3d39.9"

“Olimpic”似乎是问题所在,我没有创建 json 文件,我只是想通过此错误并解析其内容。

【问题讨论】:

  • 你能显示完整的json吗?
  • 比较长,但是如果你去这个link你就能看到完整的json

标签: python json web-scraping


【解决方案1】:

Json 坏了。一个快速而肮脏的修复可以是找到有问题的未转义引号并替换它们:

import re
import json
import requests

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
page=requests.get("https://ffcv.es/ncompeticiones/server.php?action=getEquipo&tmp=2019/2020&id=0202644811&cmp=1294", headers=headers)

t = re.sub(r'(?<!\\)"\+', r'\\"+', re.sub(r'\+"', r'+\"', page.text))
data = json.loads(t)

# print json back to screen:
print(json.dumps(data, indent=4))

打印:

{
    "id": "0202644811",
    "nombreEquipo": "C.D. Villa de Onda",
    "idClub": "0202644",
    "nombreClub": "Club Deportivo Villa de Onda",
    "urlFoto": "./img/logosClubes/0202644.jpg",
    "idCompeticion": "1294",
    "competicion": "1\u00aa. Regional G\u00ba. 1",
    "telefono": "627385404",
    "usaCalendarioOficial": "No",
    "diaDeseado": "S&aacute;bado",
    "horaDeseada": "17:00",
    "camiseta": "Blanco",
    "camiseta2": "",
    "tipocamiseta": "Lisa",
    "pantalon": "Negro",
    "camiseta1Hex": "#FFFFFF",
    "camiseta2Hex": "",
    "pantalonHex": "#000000",
    "mediasTexto": "Blanco",
    "mediasHex": "#FFFFFF",
    "estadioPrincipal": {
        "id": "020264401",
        "nombre": "Campo Mpal. \"Olimpic\"  F-11",
        "direccion": "s/n, Cirat, Onda, Castell\u00f3n, 12200",
        "urlFoto": "",
        "tipoLuz": "Artificial poca",
        "tipoSuperficie": "Artificial",
        "googleMaps": "https://www.google.es/maps/place/Campo+Municipal+\"Olimpic\"+De+Onda/@39.9657111,-0.2621533,14z/data=!4m8!1m2!2m1!1scampo+de+futbol+calle+cirat+Onda!3m4!1s0x0:0xa61fd64366a15e5f!8m2!3d39.9"
    },

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2021-03-05
    相关资源
    最近更新 更多