Python爬虫总结
最近临时写了个 python 爬虫的例子(核心代码 不开源),总结下这次编写过程中的一些相关知识点与注意事项,以一个用 nodejs 写爬虫的开发者的角度去看待与比对。
编码
在抓包与协议复现的时候,出现中文以及特殊符号免不了 url 编码,python 的编码可以使用内置库 urllib,同时也能指定编码格式。
gbk 编码中文是占 2 个字节,utf8 编码中文占 3 个字节
url 编码
from urllib.parse import urlencode, parse_qs, quote, unquote
quote("阿黄", encoding="gbk")
# %C0%A2%E2%F4
quot 还有一个 safe 参数,可以指定那个字符不进行 url 编码
quote("?", safe=";/?:@&=+$,", encoding="utf8")
# ? 加了safe
# %3F 不加safe
解码操作与编码同理
unquote("%C0%A2%E2%F4", encoding="gbk")
# 阿黄
如果编码格式错误,比如 gbk 编码用 utf8 解码将会变成不可见字符 ����,而用 utf8 编码用 gbk 解码,存在一个字节差,会输出成其他字符串,比如 你好
就会变成 浣犲ソ
,代码 unquote(quote("你好",encoding='utf8'), encoding="gbk")