解析谷歌搜索的内容

时间:2013-06-17 21:03:44

标签: python google-chrome

我想编写一个脚本(最好是在python中,但其他语言不是问题),它可以解析你在谷歌搜索中输入的内容。假设我搜索'cats',那么我希望能够解析字符串cat,例如,将它附加到我的计算机上的.txt文件中。

因此,如果我的搜索是“猫”,“狗”,“奶牛”,那么我可以拥有这样的.txt文件,

猫 小狗 牛

任何人都知道任何可以解析搜索栏并返回输入字符串的API吗?或者我可以将某些对象强制转换为字符串?

编辑:我不想制作Chrome扩展或任何东西,但最好是我可以在终端中运行的python(或bash或ruby)脚本。

由于

3 个答案:

答案 0 :(得分:1)

如果您有权访问该网址,则可以查找“& q =”来查找搜索字词。 (例如http://google.com/...&q=cats ...)。

答案 1 :(得分:1)

我可以提供2种流行的解决方案 1)Google拥有搜索引擎API https://developers.google.com/products/#google-search (它限制每天100个请求)

切割代码:

def gapi_parser(args):
    query = args.text; count = args.max_sites
    import config
    api_key = config.api_key 
    cx = config.cx 

    #Note: This API returns up to the first 100 results only. 
    #https://developers.google.com/custom-search/v1/using_rest?hl=ru-RU#WorkingResults

    results = []; domains = set(); errors = []; start = 1
    while True:
        req = 'https://www.googleapis.com/customsearch/v1?key={key}&cx={cx}&q={q}&alt=json&start={start}'.format(key=api_key, cx=cx, q=query, start=start)
        if start>=100: #google API does not can do more
            break
        con = urllib2.urlopen(req) 
        if con.getcode()==200:
            data = con.read()
            j = json.loads(data)
            start = int(j['queries']['nextPage'][0]['startIndex'])
            for item in j['items']:
                match = re.search('^(https?://)?\w(\w|\.|-)+', item['link'])
                if match: 
                    domain = match.group(0)
                    if domain not in results:
                        results.append(domain)
                    domains.update([domain])
                else:
                    errors.append('Can`t recognize domain: %s' % item['link'])
            if len(domains) >= args.max_sites:
                 break 

    print
    for error in errors:
        print error
return (results, domains)

2)我写了一个基于selenuim的脚本,它在真实浏览器实例中解析页面,但是这个解决方案有一些限制,例如,如果你运行机器人之类的搜索,就会出现验证码。

答案 2 :(得分:0)

您可能会考虑一些选项,包括它们的优点和缺点:

  • 网址:

    • 优点:正如Chris所说,访问URL并手动更改它是一个选项。为此编写脚本应该很容易,如果需要,我可以发送给我的perl脚本

    • 缺点:我不确定你能否做到。我之前制作了一个perl脚本,但它没有用,因为谷歌表示你不能在Google界面之外使用它的服务。您可能面临同样的问题

  • Google的搜索API:

    • 优点:热门选择。好文档。这应该是一个安全的选择

    • 缺点:谷歌的限制。

  • 研究其他搜索引擎:

    • 优势:他们可能没有与Google相同的限制。您可能会发现一些搜索引擎可以让您玩更多游戏并拥有更多自由。

    • 缺点:你不会得到与谷歌一样好的结果