最近在用Requests做一个自动发送数据的小程序,使用的是Requests库,在使用过程中,对于post数据的编码有一些问题,查找很多资料,终于解决。
1.post数据的urlencode问题:
我们一般post一个dict数据的时候,requests都会把这个dict里的数据进行urlencode,再进行发送。但我发现他用的urlencode默认是UTF-8编码,如果我的网站程序只支持gb2312的urlencode怎么办呢?
可以引入urllib中的urllib.parse.urlencode进行编码。
from urllib.parse import urlencode
import requests
session.post('http://www.bac-domm.com', data=urlencode({'val':'中国人民'}, encoding='gb2312'), headers = head_content)
2.避免数据被urlencode的问题:
有时我们并不希望数据进行urlencode,怎么办?只要在post的data里拼接成字符串就可以了,当然在拼接的时候要注意字符串的编码问题,比如说含有中文时,就应该把编码设置为utf-8或gb2312
vld = 'val:中国人民'
session.post('http://www.bac-domm.com', data=vld.encode('utf-8'), headers = head_content)