Du simmulierst ganz einfach, dass du das HTML-Formular ausgefüllt hättest, und lässt die Anfrage über Python statt über einen Browser laufen. Natürlich musst du dann auch allen inputs Werte zuweisen, wobei es ersteinmal mühsehlig ist alle Inputs aus dem Quelltext rauszuholen. Ich hab das mal gemacht, vielleicht verstehst du es jetzt:
Code: Alles auswählen
import httplib,urllib
def gethtmldata(server='',page='',request_method='GET',params={},debug=0):
params=urllib.urlencode(params)
if debug: print server,page,request_method,params
c=httplib.HTTPConnection(server)
c.request(request_method,page,params)
r=c.getresponse()
c.close()
if r.reason=="OK" and r.status==200:
return r.read()
return ""
suchtext="learn"
s={'search':suchtext,
'submit':'Search',
'searchLoc':'0',
'relink':'on',
'spellToler':'standard',
'sectHdr':'on',
'tableBorder':'1',
'cmpType':'relaxed',
'lang':'en'}
a=gethtmldata('dict.leo.org','/','POST',s,1)
Damit wird die ganze HTML-Antwort in a gespeichert. Ich glaube aber eher, du willst nur den Browser mit dem Suchtext aufrufen... das geht so hier schneller:
Code: Alles auswählen
import urllib,webbrowser
suchtext="learn"
s=urllib.urlencode({
'search':suchtext,
'submit':'Search',
'searchLoc':'0',
'relink':'on',
'spellToler':'standard',
'sectHdr':'on',
'tableBorder':'1',
'cmpType':'relaxed',
'lang':'en'})
webbrowser.open_new('http://dict.leo.org/?%s'%s)
Tut mir leid, dass jetzt das Thema verzerrt wird, aber es gab wirklich so viele Inputs die alle mit rein mussten... ich habe es nicht hinbekommen, die sinnvoll in mehrere Zeilen zu schreiben.
EDIT nun ist es besser lesbar, weil nicht mehr verzerrt...