我正在尝试为数据聚合项目检索json格式的交易所定价信息。一种api给我带来了问题。
在浏览器中调用url可以准确显示我的需求,但是我的调用引发了错误。我想知道我是在处理格式错误的响应,不了解某些编码/解码问题,还是只是看不到明显的东西。
在看似无法正常工作的48小时内,我尝试了多种解决方案,可以在Google上进行搜索。我将在下面举几个例子。基本上,只需要通过直接将url调用成我可以读取的内容来获得我看到的响应。
import requests
import json
r = requests.get('https://www.nlexch.com/api/v2/tickers/ltcbtc.json')
print(r)
<Response [200]>
..
r = requests.get('https://www.nlexch.com/api/v2/tickers/ltcbtc.json')
response_data = r.json()
print(response)
Traceback (most recent call last):
File "E:\Mega2\Projects\Unobot\nlex-test.py", line 5, in <module>
response_data = r.json()
File "C:\Users\encry\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\encry\AppData\Local\Programs\Python\Python37-32\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\encry\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\encry\AppData\Local\Programs\Python\Python37-32\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我期望得到的是浏览器在https://www.nlexch.com/api/v2/tickers/ltcbtc.json上显示的内容
现在是:
{"at":1567086780,"ticker":{"buy":"0.005","sell":"0.02","low":"0.00685","high":"0.00685","last":"0.00685","vol":"15.80093851"}}
发布之前,我努力看了看是否解决了类似的问题。确实,我发现了几种似乎应该立即使用的方法。我尝试过的任何事情都没有产生我需要的简单结果。
谢谢你的时间。
您会发现,如果要在示例中打印(r.text),则会获得google搜索页面。看来目的地正在寻找有效的用户代理。当我插入一个代理时,它似乎可以工作。请注意,该文本是有效的json,现在我可以提取json响应了。
import requests
import json
if __name__ == '__main__':
url = 'https://www.nlexch.com/api/v2/tickers/ltcbtc.json'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(url, headers=headers)
print(r.text)
j = r.json()
print(j['ticker'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句