Python TypeError:'NoneType'对象没有'__getitem__'属性

1 投票
1 回答
6805 浏览
提问于 2025-04-18 01:26

我有一个人和公司的列表,想通过谷歌搜索来找到这些人的LinkedIn网址。

我的代码:

#!/usr/bin/python3
import json
import urllib2
import time

file = open('names_and_companies.txt', 'r')
lines =file.readlines()
file.close()

file_out = open('out-urls.txt', 'w')

for line in lines:
    line = line.strip()
    lst = line.split(",")
    search_term = lst[0] + " " + lst[1] #construct a search term using name and company
    search_term = search_term.replace(" ","+")

    time.sleep(1)
    encoded = urllib2.quote(search_term)
    rawData = urllib2.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='+encoded).read()

    jsonData = json.loads(rawData)
    print "\n\n\n" + search_term + "\n\n\n"


    searchResults = jsonData['responseData']['results']
    print searchResults

    for er in searchResults:
        link = er['url']
        if "www.linkedin.com" in link:
            print link
            file_out.write(lst[0] + " | " + lst[1] + " | " + link + "\n")

file_out.close()

当我运行这段代码时,出现了以下错误:

追踪记录(最近的调用在最前面): 文件 "/Users/InNov8/Desktop/conference/delete.py",第30行,在 searchResults = jsonData['responseData']['results'] 类型错误:'NoneType'对象没有属性 'getitem'

我知道这个话题以前有人讨论过,但我还是个新手,无法将任何推荐的解决方案应用到我的代码上。

谢谢。

1 个回答

1

jsonData['responseData'] 返回的是 None,也就是说它没有任何内容,所以你不能像这样去访问它 (jsonData['responseData']['results'])

一个可能的解决办法是先检查一下 jsonData['responseData'] 是否为 None:

responseData = jsonData['responseData']
if responseData is not None: 
    searchResults = responseData['results']
    print searchResults

    for er in searchResults:
        link = er['url']
        if "www.linkedin.com" in link:
            print link
            file_out.write(lst[0] + " | " + lst[1] + " | " + link + "\n")

撰写回答