【问题标题】:trouble scraping from JSONP feed从 JSONP 提要中抓取问题
【发布时间】:2026-01-31 23:45:12
【问题描述】:

我之前问过类似的问题

python JSON feed returns string not object

但是我遇到了一些麻烦并且不明白。

对于大约一半的日期,此方法有效并返回 JSON 对象

例如 2013 年 11 月 9 日的作品

url = 'http://data.ncaa.com/jsonp/scoreboard/basketball-men/d1/2013/11/09/scoreboard.html?callback=c'
r = requests.get(url)
jsonObj = json.loads(r.content[2:-2])

但如果我在 2013 年 11 月 11 日尝试:

url = 'http://data.ncaa.com/jsonp/scoreboard/basketball-men/d1/2013/11/11/scoreboard.html?callback=c'
r = requests.get(url)
jsonObj = json.loads(r.content[2:-2])

我收到此错误

ValueError:无法解码 JSON 对象

我不明白为什么。当我将两个网址都放入浏览器时,它们看起来完全一样。

【问题讨论】:

  • 2019年的网址有效吗?!

标签: python json jsonp


【解决方案1】:

第二个提要中的 JSON 实际上是无效的 JSON。通过删除回调函数并运行它找到了这个:http://jsonlint.com/

要亲自查看,请搜索以下 ID:336252

该 ID 正上方的行连续包含两个逗号,这是 JSON 规范所不允许的。

我的猜测是 data.ncaa.com 的服务器正在尝试生成 JSON 本身,而不是使用 JSON 库。您应该联系站点管理员并让他们知道此错误。

【讨论】:

    【解决方案2】:

    使用 demjson

    demjson.decode(r.content[2:-2])
    

    似乎有效

    【讨论】: