使用Python在Google中搜索

Yar*_*den 13 python google-search python-2.7

我想使用python脚本在Google中搜索文本,并返回每个结果的名称,描述和URL.我目前正在使用此代码:

from google import search

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

for url in search(ip, stop=20):
     print(url)
Run Code Online (Sandbox Code Playgroud)

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

Jok*_*kab 15

我假设您正在使用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)
Run Code Online (Sandbox Code Playgroud)

  • 我得到:回溯(最近一次通话):文件“Z:/test/test_google.py”,第 57 行,在 <module> from google import google ImportError: cannot import name google (3认同)

小智 8

我尝试使用它们中的大多数,但对我来说没有用,或者尽管导入了包,但出现了诸如找不到搜索模块之类的错误。或者我确实使用了selenium web 驱动程序,如果与FirefoxchromePhantom web 浏览器一起使用,效果很好,但我仍然觉得它在执行时间方面有点慢,因为它先查询浏览器,然后返回搜索结果。

所以我想到了使用 google api,它的工作速度非常快,并且可以准确地返回结果

在我在这里分享代码之前,请遵循以下几个快速提示:-

  1. 在 Google Api 上注册以获取 Google Api 密钥(免费版)
  2. 现在搜索 Google 自定义搜索并设置您的免费帐户以获取自定义搜索 ID
  3. 现在在你的 python 项目中添加这个包(google-api-python-client) (可以通过编写 !pip install google-api-python-client 来完成)

就是这样,您现在要做的就是运行此代码:-

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"])
Run Code Online (Sandbox Code Playgroud)

  • 我非常想使用你的解决方案。但似乎在设置自定义搜索 ID 时,它特定于特定站点,例如“www.myownsite.com”。而且它并不适用于谷歌的所有结果。 (3认同)
  • 您能否提供指向 google api python 客户端文档的链接? (2认同)

Yar*_*den 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
Run Code Online (Sandbox Code Playgroud)

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

另一个很棒的解决方案

from google import search
import requests

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

  • ImportError:无法导入名称“搜索” (3认同)

Har*_*tor 7

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

与 Python 集成很容易:

from serpapi import GoogleSearch

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

query = GoogleSearch(params)
dictionary_results = query.get_dict()
Run Code Online (Sandbox Code Playgroud)

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