在学习爬虫的时候,用到postdata时,遇到了一个问题:
POST data should be bytes or an iterable of bytes
一开始以为是自己代码写的有问题,对照着教程和自己的代码,又没有错误。
在网上查了一下,可以用下面的一个语句解决。
data = urllib.parse.urlencode(values).encode(encoding='UTF8')
源文档是这样写的
For an HTTP POST request method, data should be a buffer in the standard application/x-www-form-urlencoded format. The urllib.parse.urlencode()
function takes a mapping or sequence of 2-tuples and returns an ASCII string in this format. It should be encoded to bytes before being used as the data parameter.
翻译一下就是:
一个HTTP POST请求的方法,数据应在标准application/x-www-form-urlencoded格式缓冲。urllib。解析。urlencode()函数映射或二元并返回该格式的ASCII字符串序列。在用作数据参数之前,应该将其编码为字节。