1. 程式人生 > >python爬蟲實現multipart/form-data;表單提交

python爬蟲實現multipart/form-data;表單提交

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'])])