標籤:

[黑魔法]Python模擬HTML表單提交

application/x-www-form-urlencoded這種比較簡單就不討論了。

multipart/form-data就比較麻煩了。搜了一下結果發現要麼是遠古時期的,要麼就是推薦requests。有必要這麼麻煩么?Python明明自帶MIME庫了,為啥就沒人推薦用標準庫的方法?只能自己來了

from urllib2 import Requestnfrom email.message import Messagennnclass Form(Message):nn def __init__(self):n Message.__init__(self)n self.add_header(Content-Type, multipart/form-data)n self._payload = []nn def _write_headers(self, _generator):n # DARK MAGIC followedn passnnnclass Field(Message):nn def __init__(self,name,text):n Message.__init__(self)n self.add_header(Content-Disposition,form-data,name=name)n self.set_payload(text,None)nnndef make_request(url,form_data):n form = Form()nn for name,value in form_data.iteritems():n form.attach(Field(name,str(value)))nn data = form.as_string()n # THIS IS A SEPARATION BARRIERn # NEVER LET CODE MOVE ACROSS THISn headers = {Content-Type: form[Content-Type]}nn return Request(url,data,headers)n

就是這樣


推薦閱讀:

Python入門進階推薦書單
想入生物信息學這個行業,python學習要達到什麼程度???
黃哥Python推薦免費Python電子書
拆代碼學演算法之用python實現KNN過程詳解
IDE中敲 name = Adam, age = 25,怎樣才能流暢敲鍵盤?

TAG:Python |