it-swarm.com.de

Mit Google Python suchen

Ich möchte einen Text in Google mit einem Python-Skript durchsuchen und Namen, Beschreibung und URL für jedes Ergebnis zurückgeben. Ich verwende derzeit diesen Code:

from google import search

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

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

Dies gibt nur die URL zurück. Wie kann ich den Namen und die Beschreibung für jede URL zurückgeben?

10
Yarden

Nicht genau das, wonach ich gesucht habe, aber ich habe mir vorerst eine schöne Lösung gefunden (ich könnte das editieren, wenn ich das besser machen kann). Ich kombinierte die Suche in Google wie ich (nur URL zurückgegeben) und das Paket Beautiful Soup zum Analysieren von HTML-Seiten:

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

Dies gibt mir eine Liste der Seitentitel und des Links.

Und noch eine tolle Lösung:

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

Ich nehme an, Sie verwenden diese Bibliothek von Mario Vilas wegen des stop=20-Arguments, das in seinem Code erscheint. Es scheint, als könnte diese Bibliothek nur die URLs zurückgeben, was sie fürchterlich unentwickelt macht. Daher ist das, was Sie mit der gerade verwendeten Bibliothek tun möchten, nicht möglich.

Ich würde vorschlagen, dass Sie stattdessen abenassi/Google-Search-API verwenden. Dann können Sie einfach folgendes tun:

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)
14
Jokab

Die meisten von ihnen habe ich ausprobiert, habe aber nicht funktioniert oder es gab Fehler, wie das Suchmodul trotz des Importierens von Paketen nicht gefunden wurde. Oder ich habe mit Selenium-Web-Treiber trainiert und es funktioniert hervorragend, wenn es mit Firefox oder chrome oder Phantom Webbrowser, aber ich hatte immer noch das Gefühl, dass die Ausführungszeit etwas zu langsam war, da er zuerst den Browser abfragte und dann das Suchergebnis zurückgab.

Also dachte ich an Google API und es funktioniert erstaunlich schnell und liefert präzise Ergebnisse.

Bevor ich den Code freigebe, hier ein paar schnelle Tipps: -

  1. Bei Google Api registrieren, um einen Google Api-Schlüssel zu erhalten (kostenlose Version)
  2. Suchen Sie jetzt nach Google Custom Search und richten Sie Ihr kostenloses Konto ein, um eine benutzerdefinierte Such-ID zu erhalten.
  3. Fügen Sie dieses Paket (google-api-python-client) jetzt in Ihr Python-Projekt ein (Dies kann durch Schreiben geschehen! Pip install google-api-python-client)

Das ist es und alles, was Sie jetzt tun müssen, ist, diesen Code auszuführen: -

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

Sie können auch einen Drittanbieter-Dienst wie Serp API verwenden, bei dem es sich um Ergebnisse einer Google-Suchmaschine handelt. Es löst das Problem, dass Sie Proxies mieten und die HTML-Ergebnisse analysieren müssen. JSON-Ausgabe ist besonders reichhaltig.

Es ist einfach in Python zu integrieren:

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


0
Hartator