什么是ZWNBSP,怎么去除零宽度空白字符

Python与SEO 思享 101浏览 0评论

之前转载了一篇获取百度下拉的文章《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:]}"

最后,问题解决~

推荐阅读

python使用for循环报错list.remove(x): x not in list

处理关键词有时候我们会用到python的for循环,代码小白的我碰到了一个问题,报错list.remove(x): x not in list。从列表中取出来的元素,删除竟然不在列表中?这到底是怎么回事呢? 首先来看一下我的代码: for k in ......

python厉遍列表删除元素list与list[:]的区别

在我们关键词清洗的时候有时候会用到for循环然后删除掉其中不想要的元素,但是发现有时候厉遍list列表后结果和自己预估的不一样,网上说应该用list[:],这两者有什么区别呢? 区别 这两者区别其实很好理解,一个是list列表,如果列表使用remov......

python获取百度翻译接口sign值

我们知道百度翻译API套餐8月份调整了,但是网页上我们是可以进行免费翻译的,使用F12抓包可以得到一个百度翻译的接口,但是在提交数据时,需要提交一个sign值才能成功获得翻译结果,而这个sign值跟需要翻译的字符串相关,下面为python实现步骤? ......

avatar
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址