簡體   English   中英

無法從Strawpoll API檢索數據

[英]Cannot retrieve data from Strawpoll API

我有一個簡單的python代碼,可以轉到此鏈接並檢索其數據。 這是代碼

import urllib, json
url = "http://maps.googleapis.com/maps/api/geocode/json?address=googleplex&sensor=false"
htmlfile = urllib.urlopen(url)
data = json.loads(htmlfile.read())
print data

運行代碼從URL返回數據。

{u'status': u'ZERO_RESULTS', u'results': []}

我也想這樣做,但對於Strawpoll。 閱讀他們的API文檔后 ,它似乎是相同的公式。 轉到strawpoll鏈接進行測試,它向我顯示了與上面顯示的google鏈接相同的內容結構。 API文檔指出“所有資源將以JSON返回數據”。 但是我沒有得到任何數據,出現了錯誤。 代碼完全相同,但帶有已編輯的url。

import urllib, json
url = "http://strawpoll.me/api/v2/polls/1/"
htmlfile = urllib.urlopen(url)
data = json.loads(htmlfile.read())
print data

運行代碼給我一個視圖錯誤,我會發布一個圖像,但是stackoverflow不會讓我...

我收到的最后一個錯誤是“ ValueError:無法加載JSON對象”。 但是API文檔說數據是作為JSON返回的。

刪除json.loads會給我純HTML。 這是代碼。 同樣,完全相同,但刪除了json.loads

import urllib
url = "http://strawpoll.me/api/v2/polls/1/"
htmlfile = urllib.urlopen(url)
data = htmlfile.read()
print data

我究竟做錯了什么?

我只是運行您的代碼,並調查了HTML響應。 也許您沒有設置正確的HTTP標頭? 它說訪問被拒絕,但是我不確定為什么會這樣。 我建議使用requests

>>> url = "http://strawpoll.me/api/v2/polls/1/"
>>> import requests
>>> requests.get(url).json()
{u'id': 1, u'multi': False, u'votes': [14683, 31165, 5635, 7397], u'options': [u'Sucker punch ', u'Pirates of carribian ', u'Prison logic', u'Witchhunter'], u'title': u'What movie should we watch'}

由於您不是從瀏覽器打開URL,strawpoll.me可能會努力保護其內容免遭抓取。 實際上,我在HTML響應中找到了這一行:

<p>The owner of this website (strawpoll.me) has banned your access based on your browser's signature (***).</p>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM