【发布时间】:2018-06-16 09:34:20
【问题描述】:
我正在开发一种机器学习算法来预测我所在城市的温度。我正在使用 wunderground API 来获取数据。因此,在这段代码中,我向 API 执行请求:
def extract_weather_data(url, api_key, target_date, days):
records = []
for _ in range(days):
request = BASE_URL.format(API_KEY, target_date.strftime('%Y%m%d'))
response = requests.get(request)
print request
if response.status_code == 200:
data = response.json()['history']['dailysummary'][0]
records.append(DailySummary(
date=target_date,
meantempm=data['meantempm'],
meandewptm=data['meandewptm'],
meanpressurem=data['meanpressurem'],
maxhumidity=data['maxhumidity'],
minhumidity=data['minhumidity'],
maxtempm=data['maxtempm'],
mintempm=data['mintempm'],
maxdewptm=data['maxdewptm'],
mindewptm=data['mindewptm'],
maxpressurem=data['maxpressurem'],
minpressurem=data['minpressurem'],
precipm=data['precipm']))
time.sleep(6)
target_date += timedelta(days=1)
return records
records = extract_weather_data(BASE_URL, API_KEY, target_date, 100)
我在 3-4 请求后得到这个错误:
Traceback (most recent call last):
File "data.py", line 45, in <module>
records = extract_weather_data(BASE_URL, API_KEY, target_date, 100)
File "data.py", line 26, in extract_weather_data
data = response.json()['history']['dailysummary'][0]
File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 892, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name enclosed in double quotes: line 11 column 1 (char 155)
我该如何解决这个问题?
非常感谢!
【问题讨论】:
-
看起来 JSON 格式可能有误。您能否在不尝试转换的情况下给出部分响应?
-
完美,谢谢。现在我完全糊涂了,因为那个链接刚刚给了我两个完全不同的反应。一个 HTML 格式,一个 JSON 格式,只需单击两次即可。
-
是的,但我正在尝试提取 JSON
-
我明白这一点,但是当我第一次单击链接时,服务器本身刚刚给了我一个绝对不是 json 的响应。现在它给出了 JSON。 API 有问题。
-
我现在看到了这个问题,你建议如何解决它?如果它不起作用,也许我可以重新尝试请求
标签: python request wunderground