我想用python腳本填充一些網頁形式並用POST請求發送。問題是該表單有文件上傳。我發現這個:poster for python。所以,我帶着FireBug在網站上用表格填充。我所看到的:發送郵件圖片
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]
該網站使用的授權,所以我有:
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = poster.streaminghttp.register_openers()
opener.add_handler(authhandler)
現在我帶着從網站默認的採樣和寫的代碼:
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()
我不沒有錯誤等。但發送POST後腳本不會將其添加到數據庫中(當我用手執行時,一切正常)。
我加入這個代碼:
for value in datagen:
print value
,結果是:link。 (123中的文字是該索引變量的值)。
謝謝,我會在幾個小時內檢查它。 – Ockonal 2010-12-14 05:29:52
太棒了,它的工作原理!非常感謝。 – Ockonal 2010-12-14 13:55:08
MultipartPostHandler鏈接已死亡 – 2013-05-19 12:58:30