之前转载了一篇获取百度下拉的文章《Python获取百度下拉关键词》今天在使用过程中,发现可以访问接口获取下拉词,但是使用requests请求获取的的却是{}。我再将字符直接写入接口,而非用形参又没有问题。最后无奈将请求的url变量打印,输出的地址也没有问题,最后,将输出的文本复制后发现了问题,字符中多了ZWNBSP
于是百度了一下,这到底是是个什么玩意。获得如下答案:
什么是ZWNBSP?
UTF-8有一个BOM(Byte Order Mark)的问题。
在Unicode编码中有一个叫做"zero-width no-break space (ZWNBSP)"的字符,它的编码是0xFEFF。而0xFEFF在是一个实际中不存在的字符,所以不应该出现在实际传输中。UCSUCS (Unicode Character Set) 规范建议我们在传输字节流前,先传输字符"ZWNBSP"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZWNBSP"又被称作BOM。
解决办法
# 从第二位开始取即可 str[1:]
比如,在获取下拉的代码中,替换url为
url= f"https://www.baidu.com/sugrec?pre=1&ie=utf-8&json=1&prod=pc&wd={word[1:]}"
最后,问题解决~
转载请注明:思享SEO博客 » 什么是ZWNBSP,怎么去除零宽度空白字符