網頁爬蟲中 xa0 u3000等字元的解釋及去除

2022-08-10 03:57:08 字數 1613 閱讀 3008

\xa0表示不間斷空白符,爬蟲中遇到它的概率不可謂不小,而經常和它一同出現的還有\u3000\u2800\t等unicode字串。單從對\xa0\t\u3000等含空白字元的處理來說,有以下幾種方法可行:

使用re.sub

使用正規表示式可以輕鬆匹配所有空白字元,它對於unicode字元也是有效的,比如:

import

res = '

t-shirt\xa0\xa0短袖圓領衫,\u3000體恤衫\xa0買一件\t吧

're.sub('\s

', '

', s)

#t-shirt 短袖圓領衫, 體恤衫 買一件 吧

不過該正規表示式會對所有字元都進行統一處理,可能會與原頁面展示效果有所出入。

使用translate方法

inputstring = u'

\n door:\xa0novum \t

'move = dict.fromkeys((ord(c) for c in u"

\xa0\n\t"))

output =inputstring.translate(move)

output

#door:novum

利用split方法

將字串分割再重組,這時候空白字元就會被pass掉了,不過該方法殺傷力太大,會導致所有空白消失,一定要慎用。

使用示例:

s = '

t-shirt\xa0\xa0短袖圓領衫,\u3000體恤衫\xa0買一件\t吧'''

.join(s.split())

#t-shirt短袖圓領衫,體恤衫買一件吧

使用unicodedata模組

python標準庫的unicodedata模組提供了normalize方法將unicode字元轉換為正常字元,該方法可算是處理這類情況最好的方法了,它會讓字元回歸到我們期望看到的樣子,同時不損害其它正常的空白字元,而且還能還原其它非空白字元。normalize第乙個引數指定字串標準化的方式。nfc表示字元應該是整體組成(比如可能的話就使用單一編碼),而nfd表示字元應該分解為多個組合字元表示。python同樣支援擴充套件的標準化形式nfkcnfkd,它們在處理某些字元的時候增加了額外的相容特性。使用該方法處理\xa0等字元的示例如下:

import

unicodedata

s = '

t-shirt\xa0\xa0短袖圓領衫,\u3000體恤衫\xa0買一件\t吧

'unicodedata.normalize(

'nfkc

', s)

#t-shirt 短袖圓領衫, 體恤衫 買一件 吧

python中去掉字串中的 xa0 t n

今天在做爬蟲時,發現提取出的資訊中有 xa0 並且無法去掉,查閱了相關資料,後發現該字元表示空格。xa0 是不間斷空白符 我們通常所用的空格是 x20 是在標準ascii可見字元 0x20 0x7e 範圍內。而 xa0 屬於 latin1 iso iec 8859 1 中的擴充套件字符集字元,代表空...

關於網頁中的請求頭 網路爬蟲

可能有些同學並不太懂為什麼寫爬蟲首先要加乙個請求頭,下面是引用了崔慶才老師寫的 python3網路爬蟲實戰開發 中的一篇文章,請大家參考 是用來說明伺服器要使用的附加資訊,比較重要的資訊有cookiereferer user agent 下面簡要說明 些常用的頭資訊 accept 請求報頭域,用於指...

python爬蟲網頁解析中的疑難雜症

該部分主要是通過正規表示式獲取兩個標籤之間的內容,通常這種標籤都是成對出現的。開始標籤如 字尾標籤如 核心 res tr r m tr re.findall res tr,language,re.s re.m 例子 python view plain copy coding utf 8 import...