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;



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com