python - 从不允许直接访问页面的网站检索 json

标签 python json graph

我正在尝试获取 this website 上的图表中包含的数据。我使用 Firebug 找到 json 的直接链接并使用此脚本(适用于其他直接 json 链接)。应该返回的是一组时间戳和价格。

    import urllib2
    import simplejson
    req = urllib2.Request("http://www.grandexchangecentral.com/include/gecgraphjson.php?jsid=10350")
    opener = urllib2.build_opener()
    f = opener.open(req)
    h = simplejson.load(f)

运行此脚本将返回 urllib2.HTTPError: HTTP Error 403: Forbidden 。我可以使用 Firebug 手动获取数据,但我想使用脚本对多个数据集进行排序。有没有办法在不收到 HTTP 错误的情况下获取此数据?

最佳答案

该网站查找 Referer header 并尝试确保请求源自其网页之一。这不是一个很好的安全措施,因此很容易绕过。

我现在有点懒,不想查找 urllib2 的文档,所以这里有一个使用 requests 模块的解决方案:

import requests

url = 'http://www.grandexchangecentral.com/include/gecgraphjson.php?jsid=10350'
r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'})

data = r.json

关于python - 从不允许直接访问页面的网站检索 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132143/

相关文章:

python - 从 2-grams 中提取短语

python - pipenv install --system 但仅供用户使用

python - 如何使用 python 或直接通过 cqlsh 将 Cassandra 表数据提取到 json 文件中?

java - 图:只访问那些最大化效用函数的节点

c - 如何用c程序绘制数据?

python - 拆分列表后加入相关项目

python - 何时使用 int() 以及何时使用 var : int

java - 如何在Android中显示统计数据等数据?

javascript - 无法通过在 js 中通过 innerHTML 创建的 onclick 正确调用 JS 函数

iphone - 核心图条形图 - 条不显示