2013-05-08 68 views
2

您好我想從紐約時報API「標題」後能得到的所有信息,這裏是我的代碼紐約時報API,蟒蛇

from urllib2 import urlopen 
from json import loads 
import codecs 
import time 

def call_the_articles(): 
    url = "http://api.nytimes.com/svc/search/v1/article?query=US&facets=POLITICS&api-key=##" 
    return loads(urlopen(url).read()) 

articles = call_the_articles() 

if __name__ == '__main__': 


    for story in articles("results"): 
     print story['title'].encode('ascii', 'replace') 

但是當我在終端運行,則錯誤出來,如:

File "NYtimes.py", line 10, in <module> 
    articles = call_the_articles() 
    File "NYtimes.py", line 8, in call_the_articles 
    return loads(urlopen(url).read()) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen 
    return _opener.open(url, data, timeout) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 406, in open 
    response = meth(req, response) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 519, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 444, in error 
    return self._call_chain(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 378, in _call_chain 
    result = func(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 527, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 400: Bad Request 

如何解決問題?

+1

在你的url中,你製作了api鍵'##'而不是一些字符串。也許這可能是問題所在? – Michael0x2a 2013-05-08 01:43:21

回答

1

我懷疑你想要的是:

url = "http://api.nytimes.com/svc/search/v1/article?format=json&query=US+des_facet%3A%5BPOLITICS+AND+GOVERNMENT%5D&api-key=## 

有一個能上造成不好的請求,兩件事情:

1)您使用的是facets關鍵字不正確。從Times API developer docs on facets

方面可以被認爲是搜索「視角」。通過方面,您可以從不同的角度查看搜索結果,並且可以從不同的角度處理搜索查詢。每個方面都可以被視爲代表Times文章數據的屬性或特徵。

方面可以揭示並不直觀明顯的共同點和區別點。例如,標題中包含「自行車」一詞的兩篇文章可能會有兩個截然不同的nytd_section_facet(NYTimes.com部分)值:「電影」和「健康」。同樣,討論看似不相同的話題的兩篇文章,例如雲計算和汽車展示,可能會共享一個des_facet(描述性主題術語)值:「新模型,設計和產品」。

2.)當你通過urlopen()發送它時,你需要URLEncode你的查詢。

此外,articles將是一個字典,所以你要獲得物品從使用[]

for story in articles["results"]: 

如果此處查詢是不是你想要什麼,紐約時報有一個工具,它允許你玩構建您的查詢:NYT API Request Tool

+0

非常感謝你!問題解決了!!! – Douuga 2013-05-08 13:26:42