2012-07-01 12 views
0

새로운 Azure Bing API에서 결과를 얻기 위해 그물에서 다운로드 한 API 래퍼를 사용하려고합니다. 나는 지시에 따라 그것을 구현하려고하지만 런타임 오류 받고 있어요 :Nonetype 객체에 '__getitem__'속성이 없습니다.

import requests 

URL = 'https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/Web?Query=%(query)s&$top=50&$format=json' 
API_KEY = 'SECRET_API_KEY' 

def request(query, **params): 
    r = requests.get(URL % {'query': query}, auth=('', API_KEY)) 
    return r.json['d']['results'] 

지침은 다음과 같습니다 :

>>> import bingsearch 
>>> bingsearch.API_KEY='Your-Api-Key-Here' 
>>> r = bingsearch.request("Python Software Foundation") 
>>> r.status_code 
200 
>>> r[0]['Description'] 
u'Python Software Foundation Home Page. The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to ...' 
>>> r[0]['Url'] 
u'http://www.python.org/psf/ 

이이

Traceback (most recent call last): 
    File "bingwrapper.py", line 4, in <module> 
    bingsearch.request("affirmative action") 
    File "/usr/local/lib/python2.7/dist-packages/bingsearch-0.1-py2.7.egg/bingsearch.py", line 8, in request 
    return r.json['d']['results'] 
TypeError: 'NoneType' object has no attribute '__getitem__' 

이 래퍼 코드입니다 래퍼를 사용하는 코드 (지침에 따라) :

import bingsearch 
bingsearch.API_KEY='abcdefghijklmnopqrstuv' 
r = bingsearch.request("affirmative+action") 
+0

오류가 아닌 전체 추적을 제공 할 수 있습니까? –

+0

@isbadawi는 전체 추적을 제공했습니다 – adohertyd

+0

래퍼의 'r'내용은 무엇입니까? –

답변

1

본인이 직접 테스트 한 결과 누락 된 부분은 쿼리를 올바르게 URL 인코딩하는 것입니다. 그것없이, 나는 400의 부호를 얻고 있었다.

import urllib2 
import requests 

# note the single quotes surrounding the query 
URL = "https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/Web?Query='%(query)s'&$top=50&$format=json" 

query = 'affirmative+action' 

# query == 'affirmative%2Baction' 
r = requests.get(URL % {'query': urllib2.quote(query)}, auth=('', API_KEY)) 
print r.json['d']['results'] 
주 사용의 예에서 당신이 그것을 호출 한 다음 목록은 반환 값에 status_code 속성 (확인하는 당신의 request 래퍼 결과의 list를 반환, 아직 때문에 귀하의 예를 훨씬 이해가되지 않습니다

). 이 속성은 응답 객체에 존재하지만 래퍼에서 반환하지는 않습니다.

관련 문제