2016-07-28 14 views
3

Ich möchte einen Text in Google mit einem Python-Skript suchen und den Namen, die Beschreibung und die URL für jedes Ergebnis zurückgeben. Ich bin derzeit mit diesem Code:Suche in Google mit Python

from google import search 

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

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

Das gibt nur die URL, wie kann ich den Namen und eine Beschreibung für jede URL zurückgeben?

Danke!

+0

Welche Google-Suche API haben Sie? – Jokab

Antwort

7

Nicht exatcly, was ich suchte, aber ich fand mich eine schöne Lösung für jetzt (ich könnte dies ändern, wenn ich will der Lage, dies besser zu machen). Ich kombiniert in Google-Suche, wie ich habe (nur URL zurückkehrt) und die schöne Suppe Paket HTML-Seiten für das Parsen:

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 

Diese mir eine Liste der Titel der Seiten und den Link gibt.

Und eine andere große Lösungen:

from google import search 
import requests 

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

Ich nehme an, Sie verwenden this library by Mario Vilas wegen der stop=20 Argument, das in seinem Code erscheint. Es sieht so aus, als könnte diese Bibliothek nichts zurückgeben, außer den URLs, was sie entsetzlich unentwickelt macht. Was Sie also tun möchten, ist mit der Bibliothek, die Sie gerade verwenden, nicht möglich.

Ich würde vorschlagen, stattdessen verwenden Sie abenassi/Google-Search-API. Dann können Sie einfach 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) 
+0

Ich erhalte: Traceback (jüngste Aufforderung zuletzt): Datei "Z: /test/test_google.py", Zeile 57, in von Google Import google Import: nicht – Yarden

+0

Namen google importieren @Yarden Sie haben um die Bibliothek zuerst herunterzuladen. Verwenden Sie die Anweisungen im Link. – Jokab

+0

danke, jetzt läuft es und gibt nichts zurück ... – Yarden

0

Die meisten von ihnen habe ich versucht, mit, aber nicht geklappt für mich oder gab Fehler wie Suchmodul nicht trotz Import-Pakete gefunden. Oder ich habe heraus mit Selen Web-Treiber und es funktioniert super verwendet, wenn mit Firefox oder Chrom oder Phantom Web-Browser, aber immer noch fühlte ich es war ein bisschen langsam in Bezug auf Ausführungszeit, da der Browser zuerst abgefragt und dann das Suchergebnis zurückgegeben wurde. So

Ich dachte an Google api verwenden und es funktioniert erstaunlich schnell und liefert die Ergebnisse genau.

Bevor ich den Code hier sind einige schnelle Tipps teilen folgen: -

  1. Register auf Google Api ein Google-API-Schlüssel (kostenlose Version)
  2. Jetzt für Google Custom Search suchen zu bekommen und stellen Sie Ihr kostenloses Konto, um eine benutzerdefinierte Suche ID zu erhalten
  3. Jetzt dieses Paket hinzufügen (google-api-python-Client) in Ihrem python-Projekt (kann schriftlich erfolgen!pip installieren google-api-Python-Client)

, dass es ist, und alles, was Sie jetzt tun müssen, ist diesen Code ausfü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"])