在之前的编程中爬取bilibili,
为了设置header中的referer,要将搜索链接中的关键词转为unicode中文编码,并且是百分号划分的格式。
https://search.bilibili.com/all?keyword=羽生结弦
变为
https://search.bilibili.com/all?keyword=%E7%BE%BD%E7%94%9F%E7%BB%93%E5%BC%A6
当时采用的方法是
from urllib import parse
headers = {'user-agent': 'Mozilla/5.0', 'referer': 'https://search.bilibili.com/all?keyword=' +
parse.quote(keyword, '')}
结果在爬取另一个网站中需要对中文编码的url时,出现了问题。
页面上查询关键词‘西单’后,出现的编码是 ‘%CE%F7%B5%A5’
通过编码查询网站:https://www.qqxiuzi.cn/bianma/zifuji.php,我发现这是使用了 GB2312 、 GBK 、或 GB18030 编码。
然后使用
keyword = '西单' # 关键词
keyword_en = keyword.encode('gbk')
print(keyword_en)
得到
b'\xce\xf7\xb5\xa5'
将这个<class 'bytes'>转换为 %分割(百分号分割)的编码:
keyword_en_url = parse.quote(keyword_en)
print(keyword_en_url)
得到
%CE%F7%B5%A5
打工搞成!!
本文讲述了在Python爬虫中遇到的URL编码问题,特别是如何将GB2312编码的中文关键词转换为百分号分割的格式。在处理bilibili搜索链接时,成功将'羽生结弦'转换为'%E7%BE%BD%E7%94%9F%E7%BB%93%E5%BC%A6'。然而,在处理包含'西单'的关键词时,发现其使用的是GB2312、GBK或GB18030编码,通过编码查询网站转换并得到正确格式的百分号编码URL:%CE%F7%B5%A5。
4984

被折叠的 条评论
为什么被折叠?



