使用Python在Google中搜索

时间:2016-07-28 11:45:38

标签: python python-2.7 google-search

我想使用python脚本在Google中搜索文本,并返回每个结果的名称,说明和网址。我目前正在使用此代码:

from google import search

ip=raw_input("What would you like to search for? ")

for url in search(ip, stop=20):
     print(url)

这只返回网址。如何返回每个URL的名称和描述?

5 个答案:

答案 0 :(得分:14)

我假设您正在使用this library by Mario Vilas,因为他的代码中出现了stop=20参数。看起来这个库除了URL之外不能返回任何东西,使得它可怕地未开发。因此,您目前使用的库无法实现您想要的功能。

我建议你改用abenassi/Google-Search-API。然后你可以简单地做:

from google import google
num_page = 3
search_results = google.search("This is my query", num_page)
for result in search_results:
    print(result.description)

答案 1 :(得分:7)

不是我想要的,但我现在发现自己是一个很好的解决方案(如果我能够做到这一点,我可以编辑它)。我在谷歌搜索结果就像我做的那样(仅返回URL)和Beautiful Soup包用于解析HTML页面:

from google import search
import urllib
from bs4 import BeautifulSoup

def google_scrape(url):
    thepage = urllib.urlopen(url)
    soup = BeautifulSoup(thepage, "html.parser")
    return soup.title.text

i = 1
query = 'search this'
for url in search(query, stop=10):
    a = google_scrape(url)
    print str(i) + ". " + a
    print url
    print " "
    i += 1

这给了我一个页面标题和链接的列表。

另一个很好的解决方案:

from google import search
import requests

for url in search(ip, stop=10):
            r = requests.get(url)
            title = everything_between(r.text, '<title>', '</title>')

答案 2 :(得分:3)

我尝试使用它们中的大多数,但是对我来说没有用,或者尽管导入了包,却没有找到像搜索模块那样的错误。或者我使用 selenium web驱动程序进行了工作,如果与 Firefox chrome 一起使用,效果会非常好 Phantom网络浏览器 ,但我觉得它在执行时间方面有点慢,因为它首先查询浏览器然后返回搜索结果。< / p>

所以我考虑使用谷歌api,它的工作速度非常快,并准确地返回结果

在我分享代码之前,这里有一些快速提示: -

  1. 在Google Api上注册以获取Google Api密钥(免费版)
  2. 现在搜索Google自定义搜索并设置您的免费帐户以获取自定义搜索ID
  3. 现在在python项目中添加此软件包(google-api-python-client) (可以通过写作来完成!pip install google-api-python-client)
  4. 就是这样,您现在要做的就是运行以下代码: -

    from googleapiclient.discovery import build
    
    my_api_key = "your API KEY TYPE HERE"
    my_cse_id = "YOUR CUSTOM SEARCH ENGINE ID TYPE HERE"
    
    def google_search(search_term, api_key, cse_id, **kwargs):
          service = build("customsearch", "v1", developerKey=api_key)
          res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
          return res['items']
    
    results= google_search("YOUR SEARCH QUERY HERE",my_api_key,my_cse_id,num=10) 
    
    for result in results:
          print(result["link"])
    

答案 3 :(得分:1)

您还可以使用Serp API这样的第三方服务,这是Google搜索引擎的结果。它解决了必须租用代理和解析HTML结果的问题。 JSON输出特别丰富。

与Python集成很容易:

from lib.google_search_results import GoogleSearchResults

params = {
    "q" : "Coffee",
    "location" : "Austin, Texas, United States",
    "hl" : "en",
    "gl" : "us",
    "google_domain" : "google.com",
    "api_key" : "demo",
}

query = GoogleSearchResults(params)
dictionary_results = query.get_dictionary()

GitHub:https://github.com/serpapi/google-search-results-python

答案 4 :(得分:1)

通常,您无法通过在python3中导入google包来使用python的google搜索功能。但您可以在python2中使用它。

即使使用request.get(url + query),抓取也不会执行,因为google通过将其重定向到验证码页面来阻止抓取。

可能的方式:

  • 您可以在python2中编写代码
  • 如果要用python3编写,请制作2个文件并从python2脚本中检索搜索结果。
  • 如果发现困难,最好的方法是将Google Colab或Jupyter Notebook与python3运行时一起使用。您不会有任何错误。