Kapitel 23
Internet-Programmierung
640
Es folgt ein langer XHTML-Quelltext, von dem hier nur der Anfang wiedergegeben wurde.
Beachten Sie, dass der Inhalt der Antwort des HTTP-Servers ein Bytestring (Typ
bytes) ist.
Um ihn auszuwerten, muss er zuerst decodiert werden.
Was ist, wenn eine Webseite mit der angegebenen Adresse nicht existiert? Probieren wir es
aus!
23.3.1 Automatische Auswertung von Webseiten
Mit http.client können Sie Skripte schreiben, die Webseiten gezielt nach Informationen
durchsuchen. Programme können somit für eine Problemlösung auf das gesamte Wissen
des WWW zurückgreifen.
Das folgende kleine Programm soll eine gewisse Vorstellung von den Möglichkeiten dieser
Technik vermitteln. Es erfragt vom Benutzer eine Zeichenkette (Suchbegriff) und findet
heraus, wie viele Web-Dokumente, in denen die Zeichenkette vorkommt, die Suchmaschine
Google registriert hat. Diese Zahl ist ein Maß für die »Popularität« des Begriffs. Mit derar-
tigen Anfragen kann man (in gewissen Grenzen) die Berühmtheit einer Person oder den
Bekanntheitsgrad eines Produktes abschätzen. Wie populär ist eigentlich Python?
Abb. 23.5: Die Antwort einer Anfrage an Google enthält die Anzahl der gefundenen Webseiten
mit dem Suchbegriff.
Bevor Sie mit dem Programmieren beginnen, können Sie etwas ausprobieren: Machen Sie
eine Google-Recherche, ohne die Google-Startseite zu benutzen. Geben Sie einfach in das
Adressfenster Ihres Browsers folgenden URL mit Querystring ein:
>>> verbindung = HTTPConnection('www.python.org')
>>> verbindung.request('GET', '/gibtsnicht.html')
>>> antwort = verbindung.getresponse()
>>> print(antwort.status, antwort.reason)
404 Not Found
http://www.google.de/search?q=Python
641
23.3
Zugriff auf Webseiten mit HTTP
Damit wird auf dem Google-Server ein CGI-Skript aufgerufen, das nun eine Suche nach
Webseiten auslöst, die den String Python enthalten. Die Variable
q im Querystring bezeich-
net das Suchwort (query). Abbildung 23.5 zeigt eine Antwort von Google. Darin findet man
(in Grau) die Textstelle Ungefähr 1.150.000.000 Ergebnisse. Aha, mehr als eine Milliarde Web-
seiten enthalten das Wort Python. (Diese Zahl schwankt übrigens sehr stark.) Mit einem
regulären Ausdruck kann man diese Textstelle Ungefähr ... Ergebnisse. finden und dann die
Zahl in der Mitte extrahieren. Alle Details finden Sie im folgenden Skript.
Skript:
Erläuterung:
#1: Aufbau der Verbindung zum HTTP-Server der Suchmaschine.
#2: HTTP-Anfrage an den Server. Im Querystring (beginnend mit dem Fragezeichen) wird
das Suchwort der Variablen
q zugeordnet.
#3: Nur wenn die Übermittlung funktioniert hat (Status 200), wird die Antwort des Servers
ausgewertet, ansonsten gibt es eine Fehlermeldung (
#7).
# sucher.py
from http.client import HTTPConnection
from re import *
class Sucher(object):
def __init__(self):
suchwort = input('Suchwort: ')
while suchwort:
ergebnis = self.suche(suchwort)
print(ergebnis)
suchwort = input('Suchwort: ')
print('Auf Wiedersehen ...')
def suche (self, suchwort):
verbindung = HTTPConnection('www.google.de') #1
verbindung.request('GET', '/search?q='+suchwort) #2
antwort = verbindung.getresponse()
if int(antwort.status)==200: #3
inhalt = str(antwort.read())
textstelle = findall('Ungef.+? Ergebnisse', inhalt)[0] #4
zahl = findall(' .+ ', textstelle)[0] #5
ergebnis = 'Google findet' + zahl + 'Ergebnisse.' #6
else: ergebnis = 'Keine Verbindung zu Google.' #7
verbindung.close()
return ergebnis
Sucher()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.