Python-Skript, das eine iterierende Google-Suche ausführt und die Top-Ergebnisse und Links druckt

Ich möchte ein Python-Skript schreiben, das den Titel und die URL der Top drei Links von aufeinanderfolgenden Google-Suchvorgängen ziehen wird. Zum Beispiel möchte ich in der Lage sein, Google "3 Meile laufen", "4 Meile laufen" und "5 Meile laufen" und bekommen die Top drei Links von jedem.

Ich habe versucht, einen Code zu ändern, den ich hier gefunden habe, der Ihnen erlaubt, die Top-Ergebnisse einer Google-Suche zu drucken, die der Benutzer eingibt.

Ich legte den ganzen Block in eine for-Schleife und machte die Abfrage eine spezifische Suche, die mit x erhöht.

import urllib import json as m_json for x in range(3, 5): query = 'x mile run' query = urllib.urlencode ( { 'q' : query } ) response = urllib.urlopen ( 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query ).read() json = m_json.loads ( response ) results = json [ 'responseData' ] [ 'results' ] for result in results: title = result['title'] url = result['url'] # was URL in the original and that threw a name error exception print ( title + '; ' + url ) 

Ich bekomme immer wieder unerwartete Einzugsfehler, und ich frage mich, ob jemand helfen könnte.

2 Solutions collect form web for “Python-Skript, das eine iterierende Google-Suche ausführt und die Top-Ergebnisse und Links druckt”

Einzugsfehler werden nur durch Eindringprobleme verursacht.

Es scheint offensichtlich, aber überprüfen Sie Ihren Code nicht haben, sagen Sie eine Mischung aus Tabs und Leerzeichen für Einzug. Ihr Redakteur kann 4x Räume die gleiche Größe wie eine Registerkarte anzeigen. Aber Python sieht es nicht so.

Im Vi (oder Vim) Editor wäre ein Befehl zum Ersetzen der Tabs mit Leerzeichen:

 :1,$s/[CTRL-v][TAB]/ /g 

Es fehlgeschlagen, dass man sie manuell entfernen und ersetzen kann. Mit Räumen oder Tabs, aber ich schlage Räume vor.

Kopieren und Einfügen Ihres Codes, es funktioniert für mich, also wahrscheinlich die Tat, es hier zu setzen, hat die Mischung von Leerzeichen und Tabs normalisiert.

Mit ViM können Sie es ganz einfach beheben:

 :set et :retab :w 

Es kann Ihnen helfen:

  • :et ( :expandtabs ) sagt ViM, um Räume über Tabs zu bevorzugen;
  • :retab sagt ViM, alle Registerkarten als Voreinstellungen (Leerzeichen) neu zu erstellen;
  • Endlich :w speichert deine datei änderungen

Wenn die Tabs auf ungerade Anzahl von Leerzeichen erweitern, rückgängig machen die retab und versuchen:

 :set tabstop=4 

Dann :retab und :w .

Sie können ViM immer mit Python-Dateien auf diese Weise umgehen. Bearbeiten Sie ~/.vim/ftdetect/python.vim (falls es nicht existiert, erstellen Sie es):

 au BufNewFile,BufRead *.py set filetype=python au BufNewFile,BufRead *.pyw set filetype=python au FileType python set et au FileType python set tabstop=4 
  • Beenden Sie die Schleife in Python
  • Unterschiedliche Ausgabe aus dem gleichen Code mit Exponenten in Python
  • Python Link zu File Iterator nicht Iterating
  • Ändern von etwas von Iteration über ein numpy Array zu Vektorisierung
  • Ist es möglich, einen Python für Bereichsschleife ohne Iteratorvariable zu implementieren?
  • Löschen einer Zeile in einer Datei
  • Python In-Between Dice Game Loops
  • Python-Looping und Programm neu starten, wenn true
  • Umwandlung für Loops zu Loops in Python
  • Python: Fortsetzung der nächsten Iteration in der äußeren Schleife
  • Wie kann ich den Benutzer fragen, ob er die gleiche Aufgabe noch einmal wiederholen möchte
  • Python ist die beste Programmiersprache der Welt.