python 爬虫爬取内容时, \xa0 、 \u3000 的含义与处理方法

python 爬虫爬取内容时, \xa0 、 \u3000 的含义

转自:https://www.cnblogs.com/BlackStorm/p/6359005.html

处理方法 str.replace(u'\xa0', u' ')

最近用 scrapy 爬某网站,发现拿到的内容里面含有 \xa0 、 \u3000 这样的字符,起初还以为是编码不对,搜了一下才知道是见识太少 233 。

\xa0 是不间断空白符  

我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。
而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space)
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我们见到的字符多数是 latin1 的,比如在 MySQL 数据库中。

这里也有一张简陋的Latin1字符集对照表

\u3000 是全角的空白符

根据Unicode编码标准及其基本多语言面的定义, \u3000 属于CJK字符CJK标点符号区块内,是空白字符之一。它的名字是 Ideographic Space ,有人译作表意字空格、象形字空格等。顾名思义,就是全角的 CJK 空格。它跟 nbsp 不一样,是可以被换行间断的。常用于制造缩进, wiki 还说用于抬头,但没见过。

这里还有一个 Unicode.org 上关于 CJK 标点符号块的字符代码表

转自https://www.cnblogs.com/my8100/p/7709371.html

HTML转义字符&npsp;表示non-breaking space,unicode编码为u'\xa0',超出gbk编码范围?

0.目录

1.参考
2.问题定位
不间断空格的unicode表示为 u\xa0',超出gbk编码范围?
3.如何处理
.extract_first().replace(u'\xa0', u' ').strip().encode('utf-8','replace')

 

1.参考

Beautiful Soup and Unicode Problems

详细解释

unicodedata.normalize('NFKD',string)  实际作用???

 

Scrapy : Select tag with non-breaking space with xpath

>>> selector.xpath(u'''
...     //p[normalize-space()]
...        [not(contains(normalize-space(), "\u00a0"))]

normalize-space() 实际作用???

 

In [244]: sel.css('.content')
Out[244]: [<Selector xpath=u"descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' content ')]" data=u'<p class="content text-

 

 

 

 

BeautifulSoup下Unicode乱码解决 

s.replace(u'\xa0', u'').encode('utf-8')

 

2.问题定位

https://en.wikipedia.org/wiki/Comparison_of_text_editors

定位元素显示为 &npsp;


posted @ 2018-04-11 00:41  thewindkee  阅读(1818)  评论(0编辑  收藏  举报