刚学Python爬虫,以为爬虫不过就是发送请求、获取响应、保存数据这么简单几个步骤,就可以全部搞定,可是你不试过真是不知道会遇到什么问题。
比如爬取网页时,不可避免会遇到\xa0字符串,你看着它很别扭,很想去掉它,可是会你突然发现,你立马就能想到的方法都不管用,比如正则re.sub(r’\xa0’, ‘’)和字符串的replace(’\xa0’, ‘’)方法都不能去掉它,它纹丝不动。
\xa0 是不间断空白符  ,自己做前端页面的时候也会经常用到这个符号。
通常我们所用的空格的ASCII码是 \x20 ,在标准ASCII可见字符 0x20~0x7e 范围内。
而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space)。latin1 字符集可向下兼容 ASCII ( 0x20~0x7e )。
虽然爬取到的内容包含\xa0字符内容也不影响实际使用,可谁叫我有点强迫症呢,实在有点追求完美主义,自己就是过去不自己这道坎。于是在网上找了很多解决方案,感觉方法都还不够简练。
比如,有人建议用字符串的split()方法先进行分割,再用join()方法进行连接,是可以去掉\xa0字符,可是如果原本字符串里就有空格,想保留的空格也一并去掉了。所以这个方法不算严谨。
还有人建议用ord()+fromkeys()+translate()方法,功能是实现了,可看起来是不是太复杂了,这几个方法平时都太少用到了。
通过尝试我发现一个简单的replace(u’\xa0’, ‘’)方法就可以实现了,比如:
import re
s='\xa0/\xa0The Shawshank Redemption'
s.replace(u'\xa0', '')
print(s)
输出:
/ The Shawshank Redemption
完美解决。
你试过了,你才会对它理解更透彻。