本案例只解析文本
若需解析圖片可查看: http://www.itdecent.cn/p/50cbb428ad1c
- 需引用 html2json.js , 將html轉(zhuǎn)化json文本
- 利用遞歸取出文本
import HtmlToJson from './html2json.js';
let arr = []; //存儲(chǔ)文本數(shù)據(jù)
//遞歸取出文本數(shù)據(jù)
function getcontent(data, arr) {
data.forEach((item, index) => {
if (item.node == "element" && item.nodes) {
//先判斷 item.tag == "br"
if (item.tag == "br") {
arr.push({ node: "br", text: "\n" });
} else {
let newarr = item.nodes;
return getcontent(newarr,arr)
}
} else if (item.node == "text") {
arr.push(item);
}
})
}
//根據(jù) data 返回文本
function getText( data = '') {
var transData = {};//存放轉(zhuǎn)化后的數(shù)據(jù)
transData = HtmlToJson.html2json(data);
let text_transData = {}; //純文本 解析文本內(nèi)容
if (transData.nodes.length > 0) {
text_transData = transData.nodes[0].nodes;
let testdata = []; //文本數(shù)據(jù)
//判斷body中有內(nèi)容才繼續(xù)
text_transData.forEach((item, index) => {
if (item.tag == "body" && item.nodes) {
testdata = item.nodes;
}
})
if (testdata.length > 0){
arr = []; //先清空arr 在累加
getcontent(testdata,arr);
// console.log(arr, " 轉(zhuǎn)義數(shù)據(jù):arr")
let str = "";
arr.forEach((item, index) => {
str += item.text;
})
return str;
}else{
return '';
}
}
}
module.exports = {
getText: getText,
}
調(diào)用 getText ()方法
const Gettext = require('../../Gettext.js');
let content ="
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>樂善好施</p>
</body>
</html>"
let newcontent = Gettext.getText(content);
console.log(" 樂善好施 ")