Ich möchte einige Web-Formular mit Python-Skript füllen und mit POST-Anfrage senden. Das Problem ist, dass das Formular das Laden von Dateien hat. Ich habe folgendes gefunden: poster für Python. Also, ich kam mit FireBug auf der Website mit Formular und füllte es aus. Was ich sah:Bild mit Beitrag senden
values[action] add_save
values[mod] blog
values[depth] 2
values[pid] 121
values[title] title
values[title_eng] title_en
img PNG...[a lot of binary image data]
Das Website-Autorisierung verwendet, so habe ich:
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = poster.streaminghttp.register_openers()
opener.add_handler(authhandler)
nun den Code, den ich kam von der Website mit Standardprobe und schrieb:
index = """some parsed integer"""
datagen, headers = multipart_encode({
'values[action]': 'add_save',
'values[mod]': 'blog',
'values[depth]': '2',
'values[pid]': index,
'values[title]' : 'title',
'values[title_eng]' : 'title_eng',
'img': open('1.png', 'rb')
})
request = urllib2.Request(theurl, datagen, headers)
getdata = urllib2.urlopen(request)
print getdata.read()
I don‘ t haben Fehler, etc. Aber nach dem Senden von POST fügt das Skript es nicht in die Datenbank ein (wenn ich das mit den Händen mache, ist alles in Ordnung).
Ich habe diesen Code:
for value in datagen:
print value
Und das Ergebnis ist: link. (Die 123-Nummer im Text ist der Wert dieser Indexvariablen).
Danke, ich werde es in ein paar Stunden überprüfen. – Ockonal
Großartig, es funktioniert! Danke vielmals. – Ockonal
MultipartPostHandler-Verbindung ist nicht verfügbar –