cheerio DOM化并解析的時候
1.假如使用了 .text()方法,則一般不會有html實(shí)體編碼的問題出現(xiàn)
2.如果使用了 .html()方法,則很多情況下(多數(shù)是非英文的時候)都會出現(xiàn),這時,可能就需要轉(zhuǎn)義一番了
類似這些 因?yàn)樾枰鲾?shù)據(jù)存儲,所有需要轉(zhuǎn)換
大多數(shù)都是(x)?/w+的格式
所以就用正則轉(zhuǎn)換一番
var body = ....//這里就是請求后獲得的返回?cái)?shù)據(jù),或者那些 .html()后獲取的//一般可以先轉(zhuǎn)換為標(biāo)準(zhǔn)unicode格式(有需要就添加:當(dāng)返回的數(shù)據(jù)呈現(xiàn)太多///u 之類的時)body=unescape(body.replace(///u/g,"%u"));//再對實(shí)體符進(jìn)行轉(zhuǎn)義//有x則表示是16進(jìn)制,$1就是匹配是否有x ,$2就是匹配出的第二個括號捕獲到的內(nèi)容,將$2以對應(yīng)進(jìn)制表示轉(zhuǎn)換body = body.replace(/(x)?(/w+);/g,function($,$1,$2){ return String.fromCharCode(parseInt($2,$1?16:10)); });
ok ~
當(dāng)然了,網(wǎng)上也有很多個轉(zhuǎn)換的版本,適用的就行了
后記:
當(dāng)使用爬蟲抓取網(wǎng)頁數(shù)據(jù)時,cheerio模塊是經(jīng)常使用到底,它像jq那樣方便快捷
(但有些功能并未支持或者換了某種形式,比如 jq的 jQuery('.myClass').prop('outerHTML') ,cheerio則等價于 jQuery.html('.myClass')http://www.mgenware.com/blog/?p=2514)
新聞熱點(diǎn)
疑難解答