Nonetype object has no attribute '__getitem__'

Posted by adohertyd on Stack Overflow See other posts from Stack Overflow or by adohertyd
Published on 2012-07-01T00:40:00Z Indexed on 2012/07/01 3:16 UTC
Read the original article Hit count: 355

Filed under:

I am trying to use an API wrapper downloaded from the net to get results from the new azure Bing API. I'm trying to implement it as per the instructions but getting the runtime error:

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__'

This is the wrapper code:

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']

The instructions are:

>>> 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/

This is my code that uses the wrapper (as per the instructions):

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

© Stack Overflow or respective owner

Related posts about python