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)
新聞熱點
疑難解答