在进行网页爬虫分析时,遇到了一些特殊字符,通过网络搜索找到了解决方法,所以利用这篇博文将遇到的问题以及解决方法记录下来,方便回顾,也希望这篇博文能够帮助到大家。
这些特殊字符通常不在ASCII可见字符范围内,因此我们在浏览网页时看不到这些字符,但是在分析网页源码时会遇到。
处理这些字符最简单的方法是利用split方法去除。
参考博文:https://blog.csdn.net/wangbowj123/article/details/78061618
关键程序段(来自参考博文):
>>> s
'T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0'
>>> out = "".join(s.split())
>>> out
'T-shirt短袖圆领衫,体恤衫'
使用split方法进行特殊字符的去除有个坏处就是原文中的空格与换行也会一并删除,原因是“split方法中不带参数时,表示分割所有换行符、制表符、空格”。如果文字中只有一两种特殊字符,也可以利用replace方法进行去除。
参考博文:https://blog.csdn.net/thewindkee/article/details/79890207
例程:
>>> s='T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0'
>>> s
'T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0'
>>> out=s.replace('\xa0','')
>>> out
'T-shirt短袖圆领衫,体恤衫'
这个方法可以避免将需要保留的空格和换行等符号删除,但是坏处是需要对每种特殊字符单独设置。
方法的原理是先将需要保留的制表符、换行符和空格等利用replace方法替换为特定的符号,然后利用方法一中的方法将其余的不需要保留的不可见字符去除,最后再利用replace方法还原原来的制表符、换行符和空格等。
例程:
>>> s='aaabbb\xa0 ccc\t ddd\n eee'
>>> s
'aaabbb\xa0 ccc\t ddd\n eee'
>>> print(s)
aaabbb ccc ddd
eee
>>> out=s.replace('\t','【制表符】')
>>> out=out.replace('\n','【换行符】')
>>> print(out)
aaabbb ccc【制表符】 ddd【换行符】 eee
>>> out=''.join(out.split())
>>> print(out)
aaabbbccc【制表符】ddd【换行符】eee
>>> out=out.replace('【制表符】','\t')
>>> out=out.replace('【换行符】','\n')
>>> print(out)
aaabbbccc ddd
eee
>>> out
'aaabbbccc\tddd\neee'