Python脚本,运行迭代谷歌搜索并打印顶级结果和链接

时间:2016-01-26 20:24:38

标签: python loops for-loop google-search

我想写一个python脚本,它将拉动连续谷歌搜索的前三个链接的标题和网址。例如,我希望能够谷歌“3英里运行”,“4英里运行”和“5英里运行”,并从每个链接获得前三个链接。

我尝试修改我在此处找到的一些代码,允许您打印用户输入的一个Google搜索的最高结果。

我将整个块放在for循环中,并使查询成为一个随x增加的特定搜索。

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']   # was URL in the original and that threw a name error exception
        print ( title + '; ' + url )

我不断收到意外的缩进错误,我想知道是否有人可以提供帮助。

2 个答案:

答案 0 :(得分:1)

缩进错误只是由缩进问题引起的。

看起来很明显,但检查你的代码没有,比如混合使用标签和空格进行缩进。您的编辑器可能会显示与一个选项卡大小相同的4个空格。但是python不会这样看。

在Vi(或Vim)编辑器中,用空格替换制表符的命令是:

:1,$s/[CTRL-v][TAB]/    /g

如果不能,您可以手动删除并替换它们。有空格或制表符,但我建议使用空格。

复制并粘贴你的代码,它对我有用,所以把它放在这里的行为可能会使空格和制表符的混合规范化。

答案 1 :(得分:0)

使用ViM,您可以非常轻松地修复它:

:set et
:retab
:w

它可以帮到你:

  • :et:expandtabs)告诉ViM优先选择空格;
  • :retab告诉ViM重建所有标签作为其首选项(空格);
  • 最后,:w保存您的文件更改。

如果标签扩展到奇数空格,请撤消retab,然后尝试:

:set tabstop=4

然后:retab:w

您可以告诉ViM始终以这种方式处理Python文件。编辑~/.vim/ftdetect/python.vim(如果它不存在,请创建它):

au BufNewFile,BufRead *.py  set filetype=python
au BufNewFile,BufRead *.pyw set filetype=python
au FileType python set et
au FileType python set tabstop=4