cheerio DOM化並解析的時候
1.假如使用了 .text()方法,則一般不會有html實體編碼的問題出現
2.如果使用了 .html()方法,則很多情況下(多數是非英文的時候)都會出現,這時,可能就需要轉義一番了
類似這些 因為需要作數據存儲,所有需要轉換
代碼 代碼如下:
Халк крушит. Новый способ исполнен
大多數都是(x)?\w+的格式
所以就用正則轉換一番
var body = ....//這裡就是請求後獲得的返回數據,或者那些 .html()後獲取的 //一般可以先轉換為標准unicode格式(有需要就添加:當返回的數據呈現太多\\\u 之類的時) body=unescape(body.replace(/\\u/g,"%u")); //再對實體符進行轉義 //有x則表示是16進制,$1就是匹配是否有x ,$2就是匹配出的第二個括號捕獲到的內容,將$2以對應進制表示轉換 body = body.replace(/(x)?(\w+);/g,function($,$1,$2){ return String.fromCharCode(parseInt($2,$1?16:10)); });
ok ~
當然了,網上也有很多個轉換的版本,適用的就行了
後記:
當使用爬蟲抓取網頁數據時,cheerio模塊是經常使用到底,它像jq那樣方便快捷
(但有些功能並未支持或者換了某種形式,比如 jq的 jQuery('.myClass').prop('outerHTML') ,cheerio則等價於 jQuery.html('.myClass')http://www.mgenware.com/blog/?p=2514)