2016-03-27 76 views
0

我想写一个脚本,将搜索字符串在谷歌,循环和迭代字符串中的数字,并打印顶部的链接。我有这样的:使用Python来搜索字符串,其中数字迭代

import urllib.parse 
import urllib.request 
import json as m_json 

for x in range(3, 5): 
    query = '"Amazon Best Sellers Rank: #' + str(x) + ' in Kitchen & Dining": Amazon.com' 
    query = urllib.parse.urlencode ({ 'q' : query }) 
    response = urllib.request.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query).read().decode() 
    json = m_json.loads (response) 
results = json [ 'responseData' ] [ 'results' ] 
for result in results: 
    title = result['title'] 
    url = result['url'] # was URL in the original and that threw a name error exception 
    print (title + '; ' + url) 

我得到这个错误: “类型错误: 'NoneType' 对象不是标化的” 第10行,结果= ...

回答

0

同样的问题被张贴你前两个月,现在再次发布Link to your question.

而顺便说一句,您的问题的答案也已提供在计算器上。

但我再次发布代码给你。 只使用你的代码,我在Python 2.7中获得了期望的结果。

import urllib 
import json as m_json 

for x in range(3, 5): 
    query = 'x mile run' 
    query = urllib.urlencode ({ 'q' : query }) 
    response = urllib.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query).read() 
    json = m_json.loads (response) 
    results = json [ 'responseData' ] [ 'results' ] 
    for result in results: 
     title = result['title'] 
     url = result['url'] 
     print (title + '; ' + url)