爬虫_urlencode问题
抓取小说的时候,查看小说搜索书名的接口 发现提交的data为
keyword=%CC%EC%CC%C6%BD%F5%D0%E5&t=1
中文部分进行了urlencode,尝试用 python的urllib.parse 的unquote解析一下,发现打印出来的是乱码,看了一下网站的编码是gbk,猜测这个应该是gbk编码的字符串urlencode之后的
unquote('%CC%EC%CC%C6%BD%F5%D0%E5').encode("utf-8").decode("gbk") 发现还是不行
对原先搜索的汉字进行gbk编码后,发现为
\xcc\xec\xcc\xc7\xbd\xf5\xd0\xe5
urlencode的过程只是把\x替换成% 因此这里应该把,keyword解析为字节,dir看了一下parse的方法 发现
unquote_to_bytes : 成功解析回去
请求的过程:
data = {
"keyword": urllib.parse.quote(book_name.encode('gbk')),
"t": 1
}
rsp = requests.post(url, data=data)
结果发现 返回的界面提示搜索不到结果
抓包看了一下请求:
发现自己的keyword 多了一个 %25 对%25解码看一下是 ‘%’ 号
keyword=%25CC%25EC%25CC%25C6%25BD%25F5%25D0%25E5&t=1
应该是requests会自动对非ascii字符进行urlencode,我们在data中把keyword encode就可以了
data = {
"keyword": book_name.encode('gbk'),
"t": 1
}
rsp = requests.post(url, data=data)