nodejs爬蟲抓取數據之編碼問題
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)
相關文章
詳解用Node.js實現Restful風格webservice
本篇文章主要介紹了詳解用Node.js實現Restful風格webservice,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09詳解如何使用Node.js編寫命令工具——以vue-cli為例
本篇文章主要介紹了如何使用Node.js編寫命令工具——以vue-cli為例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Node.js環(huán)境下Koa2添加travis ci持續(xù)集成工具的方法
這篇文章主要給大家介紹了在Node.js環(huán)境下Koa2添加travis ci持續(xù)集成工具的方法,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。2017-06-06