pyajaxgoogle - Google-Bindings ohne(!) API-Key

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Nachdem Google ja seit ende 06 keine API-Keys für die Suche mehr rausspringen lässt, hab ich mich mal dran gemacht, ein Python Google-Binding zu schreiben.

Hinweis: Das Benutzen der Google-Suche ohne API-Key ist legitim, da man keinen API-Key für die AJAX-API benötigt.


Funktionen
Was es kann? Suchen! Bis jetzt allerdings immer nur soviele Einträge, wie die Ajax-Suche (Testbar auf den Google-Seiten) hergibt, das sind so 5-10 Ergebnisse.

Das Modul gibts hier. Die Dokumentation hab ich mal hier hingeladen (liegt zwar auch im Repo, dort ändern sich die URIs aber dauernd wegen Commits usw).

Benutzung
Die einfachste Art der Suche ist die folgende:

Code: Alles auswählen

import pyajaxgoogle as google
results = google.easy_search("foobar")
Diese Methode für Faule und Dummies tut Folgendes (nachzulesen im Source ;))

Code: Alles auswählen

setup_logger()
# logger initiieren,
url = encode_url(search_string, get_system_language())
# URL enkodieren,
stream = open_stream(url)
# Stream öffnen,
search_results, details, status = get_query_result(stream)
# Rückgabe holen,
if not check_status(status):
    return False
return get_search_results(search_results['results'])
# Suchergebnisse rausfiltern.
# Optional lässt sich hier noch ein 'level' angeben.
# Dann bekommt man mehr output, wie den formatierten Titel eines
# Suchergebnisses oder die URL für den Google-Cache.
Feedback ist erwünscht. Lizenz ist wie angegeben GPLv3. Bei entsprechendem Feedback mache ich mich eventuell daran, die ganze API-Beschreibung mal durchzuackern und das hier zu 'extended pyajaxgoogle' zu hacken ;)

- dauerbaustelle
Zuletzt geändert von Dauerbaustelle am Sonntag 2. November 2008, 00:24, insgesamt 2-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also quasi Google entgegen der Geschäftsbedingungen nutzen? Also ich würde vor der Benutzung absehen, vor allem wenn ich das Programm das dies nutzt weitergeben wollen würde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Leonidas hat geschrieben:Also quasi Google entgegen der Geschäftsbedingungen nutzen? Also ich würde vor der Benutzung absehen, vor allem wenn ich das Programm das dies nutzt weitergeben wollen würde.
Warum sollte das gegen die Bestimmungen sein? Das GNOME-Applet 'Deskbar' zum Beispiel nutzt das auch und ich schätze, die haben genau so wenig von "wann darf ich das einsetzen" im Internet gefunden wie ich ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dauerbaustelle hat geschrieben:Warum sollte das gegen die Bestimmungen sein?
Weil das dort so steht?!
Google Terms of Service hat geschrieben:4. Ihre Nutzung der Dienste

Sie sind nicht berechtigt, die Dienste in missbräuchlicher Art und Weise zu nutzen, in die Dienste einzugreifen oder auf die Dienste in anderer Weise als über die von Google bereitgestellten Benutzeroberflächen und/oder Schnittstellen zuzugreifen. Sie müssen sich an die Vorgaben halten, die in den robots.txt-Dateien der Dienste hinterlegt sind. Es ist Ihnen untersagt, auf die Dienste in automatisierter Weise zuzugreifen, beispielsweise mit Robots oder Scripts.
Ich weiß jetzt auch gerade nicht, warum die Deskbar Googles Codesuche unterstützt und Google mithilfe von simplejson parst. Scheint mir eine Policy Violation zu sein, allerdings sieht das auch so aus als hätten die sich da keine Gedanken drüber gemacht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Ich weiß jetzt auch gerade nicht, warum die Deskbar Googles Codesuche unterstützt und Google mithilfe von simplejson parst. Scheint mir eine Policy Violation zu sein, allerdings sieht das auch so aus als hätten die sich da keine Gedanken drüber gemacht.
Oder sie haben ein abkommen mit Google welches das Erlaubt. Die scheinen da Grundsätzlich recht kooperativ zu sein.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Oder sie haben ein abkommen mit Google welches das Erlaubt. Die scheinen da Grundsätzlich recht kooperativ zu sein.
Ja, das habe ich mir auch überlegt, aber dazu leider keinerlei Information gefunden, weder auf dessen Homepage noch im GNOME-Wiki.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

und/oder Schnittstellen zuzugreifen
Ich nutze doch die Google-Schnittstellen?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dauerbaustelle hat geschrieben:
und/oder Schnittstellen zuzugreifen
Ich nutze doch die Google-Schnittstellen?!
Das ist die Schnittstelle für den User/Browser. Ich zitiere nochmal das gleiche:
Google Terms of Service hat geschrieben:Es ist Ihnen untersagt, auf die Dienste in automatisierter Weise zuzugreifen, beispielsweise mit Robots oder Scripts.
Ein Browser fällt nicht darunter, deine Lib schon und die Deskbar auch, sofern die da nicht irgendwas mit Google ausgehandelt haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Hm, und wie ist das dann mit den APIs? Die darf man doch verwenden? Wie man will. Und im Endeffekt nutze ich doch ne API.

Werd mal beim deskbar-applet-Team nachfragen ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dauerbaustelle hat geschrieben:Hm, und wie ist das dann mit den APIs? Die darf man doch verwenden?
Sicher darfst du sie verwenden, vorrausgesetzt du hast einen API-Key. Das ist ja genau der Sinn warum es diese API-Keys gibt, damit Google Kontrolle darüber hat, wer was wann anfragt und wie oft. Das sind übrigens die "von Google bereitgestellten Schnittstellen", die in Punkt 4 der TOS auch angesprochen werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Leonidas hat geschrieben:
Dauerbaustelle hat geschrieben:Hm, und wie ist das dann mit den APIs? Die darf man doch verwenden?
Sicher darfst du sie verwenden, vorrausgesetzt du hast einen API-Key. Das ist ja genau der Sinn warum es diese API-Keys gibt, damit Google Kontrolle darüber hat, wer was wann anfragt und wie oft. Das sind übrigens die "von Google bereitgestellten Schnittstellen", die in Punkt 4 der TOS auch angesprochen werden.
Für die AJAX-Api braucht man aber keinen Key.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Na sag das doch gleich, oder Usefulness of having an AJAX API Key. Das erklärt auch an dieser Stelle, warum Deskbar legitim vorgeht (nutzt AJAX API) und simplejson braucht (weil man wohl JSON bekommt).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Okay, war wohl ein Missverständnis. Vermutlich ist der Titel etwas irreführend. Ich erlaube mir, den Hinweis zur Legalität in meinen ersten Post einzufügen.
Antworten