我正在尝试获取 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/