【问题标题】:Google search from python app从 python 应用程序进行谷歌搜索
【发布时间】:2015-12-18 04:06:06
【问题描述】:

我正在尝试使用输入文件读取每一行并使用该行搜索 google 并打印查询中的搜索结果。我得到了来自维基百科的第一个搜索结果,这很好,但后来我得到了错误:文件“test.py”,第 24 行,在 字典[str(lineToRead)].append(str(i)) KeyError:“鼠标”

input file pets.txt looks like this:
cat 
dog
bird
mouse

inputFile = open("pets.txt", 'r') # Makes File object
outputFile = open("results.csv", "w") 
dictionary = {}  # Our "hash table"
compare = "https://en.wikipedia.org/wiki/" # urls will compare against this string


for line in inputFile.read().splitlines():
    # ---- testing ---
    print line 
    lineToRead = line
inputFile.close()

from googlesearch import GoogleSearch
gs = GoogleSearch(lineToRead)
#gs.results_per_page = 5
#results = gs.get_results()  

for i in gs.top_urls():
    print i # check to make sure this is printing out url's
    compare2 = i
    if compare in compare2: # compare the two url's
        dictionary[str(lineToRead)].append(str(i)) #write out query string to dictionary key & append the urls


for i in dictionary:
    print i
    outputFile.write(str(i))
    for j in dictionary[i]: 
        print j
        outputFile.write(str(j))
        #outputFile.write(str(i)) #write results for the query string to the results file.

#to check if hash works print key /n print values /n print : /n print /n

#-----------------------------------------------------------------------------

【问题讨论】:

  • 你在没有定义字典[str(lineToRead)]的情况下调用dictionary[str(lineToRead)].append。

标签: python google-search-api


【解决方案1】:

杰里米班克斯是对的。如果你写dictionary[str(lineToRead)].append(str(i)) 而不首先初始化dictionary[str(lineToRead)] 的值,你会得到一个错误。

您似乎还有一个错误。 lineToRead 的值将始终为 mouse,因为您在搜索任何内容之前已经循环并关闭了输入文件。很可能,您想遍历 inputFile 中的每个单词(即 cat、dog、bird、mouse)

为了解决这个问题,我们可以编写以下代码(假设您希望在字典中为每个搜索词保留一个查询字符串列表作为值):

for line in inputFile.read().splitlines(): # loop through each line in input file
  lineToRead = line
  dictionary[str(lineToRead)] = [] #initialize to empty list
  for i in gs.top_urls():
     print i # check to make sure this is printing out url's
     compare2 = i
     if compare in compare2: # compare the two url's
       dictionary[str(lineToRead)].append(str(i)) #write out query string to dictionary key & append the urls
inputfile.close()

您可以删除为“测试”输入文件而编写的 for 循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多