Daten mit einem python programm an eine Webseite schicken.

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
pinky
User
Beiträge: 1
Registriert: Montag 26. Oktober 2009, 16:58

Hallo,

ich habe hier eine ganz einfache Webseite mit einem Formular in das man eine Zeichenkette eingeben kann:

Code: Alles auswählen

<p><form action="/foo/bar" method="post">
<p>Text: <input name="query" type="text" size ="30"></p>
<p><input type="submit" value="textdata"></p>
</form></p>
Wenn ich im Browser jetzt einen Text eingebe, dann komme ich auch die Unterseite /foo/bar auf der mein eingegebener texte einfach wieder ausgegeben wirdl.

Diese Aufruf würde ich jetzt gerne über ein Python-Skript machen und die Ausgabe in der Konsole ausgeben.

Mein Skript sieht so aus:

Code: Alles auswählen

import urllib
import urllib2
import sys

url = 'http://localhost:8080/request'

values = {
  'query' : "Das ist mein Text der wieder ausgegeben werden soll"
  }

data = urllib.urlencode(values)

req = urllib2.Request(url, data)
response = urllib2.urlopen(req)

the_page = response.read()

print the_page
Wenn ich jetzt mein Skript aufrufe, dann bekomme ich diesre Fehlermeldung:

Code: Alles auswählen

$ python meinskript.py 
Traceback (most recent call last):
  File "../meinskript.py", line 15, in <module>
    response = urllib2.urlopen(req)
  File "/usr/lib/python2.5/urllib2.py", line 124, in urlopen
    return _opener.open(url, data)
  File "/usr/lib/python2.5/urllib2.py", line 387, in open
    response = meth(req, response)
  File "/usr/lib/python2.5/urllib2.py", line 498, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.5/urllib2.py", line 425, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.5/urllib2.py", line 506, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 405: Method Not Allowed
$
Ich bin heute schon den ganzen Tag am verzweifeln, da es vor einiger Zeit mehr oder weniger genau so funktioniert hat.

Hat hier vielleicht jemand eine Idee was ich falsch mache?

Danke!
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

pinky hat geschrieben:

Code: Alles auswählen

<form action="/foo/bar" method="post">
Da action="/foo/bar" ist, musst Du auch die Daten an die Seite /foo/bar schicken und nicht an /request:

Code: Alles auswählen

url = 'http://localhost:8080/foo/bar'
http://www.felix-benner.com
Antworten