在之前的编程中爬取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
打工搞成!!