python爬蟲實現multipart/form-data;表單提交
阿新 • • 發佈:2019-02-09
fields 引數 接收值: [(key,value),(k,v)] 此引數接收普通鍵值對資料,將鍵值對轉換為multipart/form-data格式
files 接收值: [(key,filename,value) 此引數接收檔案上傳資料,將其對轉換為multipart/form-data格式
def encode_multipart_formdata(fields, files):
u"""構造multipart_formdata引數"""
boundary = '---------------------------7e229e1a230202'
crlf = '\r\n'
l = []
for (key, value) in fields:
# name: 標籤名
# value : 標籤對應的值
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="%s"' % key)
l.append('')
l.append(value)
for (key, filename, value) in files:
# key : 標籤名
# filename : 檔名
# value 檔案內容
filename = filename
l.append('--' + boundary)
l.append(
'Content-Disposition: form-data; name="%s"; filename="%s"' % (
key, filename
)
)
l.append('Content-Type: image/x-png' )
l.append('')
l.append(value)
l.append('--' + boundary + '--')
l.append('')
# 以 \r\n 為分隔符將列表連結為字串
body = crlf.join(l)
content_type = 'multipart/form-data; boundary=%s' % boundary
return content_type, body
呼叫方式如下:
content_type, data = encode_multipart_formdata(
[('checkVehicleCode', self.today_code), ('uploadFileType1', ''), ('btnUpload123Flag', '1'), ('fticket', ''),
('checkVehicleCodeImg', '')], [('policyAttachment1', name, image['img_data'])])