web-dev-qa-db-ja.com

PythonでGoogleを検索する

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)

これはURLのみを返します。各URLの名前と説明を返すにはどうすればよいですか?

13
Yarden

私が探していたものとはまったく異なりますが、私は今のところ素敵な解決策を見つけました(これを改善できるなら、これを編集するかもしれません)。 Googleでの検索(URLのみを返す)とHTMLページを解析するためのBeautiful Soupパッケージを組み合わせました:

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>')
7
Yarden

彼のコードにstop=20引数があるため、Mario Vilasによる このライブラリを使用していると仮定します 。このライブラリは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)
15
Jokab

それらのほとんどは使用してみましたが、うまくいかなかったか、パッケージをインポートしても検索モジュールが見つからないなどのエラーを出しました。または、私はSelenium Webドライバーで解決しましたが、FirefoxまたはchromeまたはPhantom web browser、それでも、最初にブラウザに問い合わせてから検索結果を返すため、実行時間が少し遅いと感じました。

だから私はgoogle apiを使用することを考えましたが、驚くほど速く動作し、結果を正確に返します.

ここでコードを共有する前に、従うべきいくつかの簡単なヒントがあります:

  1. Google Apiに登録してGoogle Apiキーを取得する(無料版)
  2. Googleカスタム検索を検索し、無料のアカウントを設定してカスタム検索IDを取得する
  3. このパッケージ(google-api-python-client)をpythonプロジェクトに追加します(!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"])
3
Piyush Rumao

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


1
Hartator