Javascript 结构并从表中选择数据
我正在使用ChereIOJS从我正在开发数据采集器的页面中选择元素,但是我在使用这个动态表时遇到了困难 这是一个独立于整个页面的代码Javascript 结构并从表中选择数据,javascript,node.js,selector,cheerio,Javascript,Node.js,Selector,Cheerio,我正在使用ChereIOJS从我正在开发数据采集器的页面中选择元素,但是我在使用这个动态表时遇到了困难 这是一个独立于整个页面的代码 const fs = require("fs"); const cheerio = require("cheerio"); (async () => { const page = fs.readFileSync("table.html", "utf8"); const $ = cheerio.load(page); const info = $
const fs = require("fs");
const cheerio = require("cheerio");
(async () => {
const page = fs.readFileSync("table.html", "utf8");
const $ = cheerio.load(page);
const info = $("table tbody");
info.each(function(i, element) {
const text = $(this).html();
console.log(text, "*----*");
// console.dir(page, { depth: null });
});
})();
我给你举了这个例子来改进。 它显示表内信息的打印。 在循环中,迭代每个TH和TD并返回值 这个脚本可以通过重构来改进 链接在线回复:
你的问题是什么?我想把tbody数据转换成json,但我只找到了tbody列表部分,我不知道如何构造和选择它们的信息,因为表是动态的。我们也不知道表的结构。如果没有关于输入外观和输出外观的更多信息,任何人都无能为力。解决方案已与项目合并,谢谢Lucas Ferreira。
const fs = require("fs");
const cheerio = require("cheerio");
(async () => {
const page = fs.readFileSync("table.html", "utf8");
const $ = cheerio.load(page);
const info = $("table tbody");
info.each(function(i, element) {
console.log("###################################\n")
extractTR(this, i)
console.log("___________________________________\n")
});
function extractTR(el, i) {
let childrens = $(el).children()
childrens.each(function(t, item){
if(item.children && item.children.length > 0) {
console.log(extractText(item, t))
}
});
}
function extractText(el, i) {
let data = $(el).children(),
text = [],
type = [],
result
data.each(function(t, elm){
text[t] = $(elm).text().trim()
type[t] = $(elm).prop('tagName')
});
let [text_1, text_2] = text
let [first, second] = type
return result = first == "TD" && second == "TD" ? `${text_1}\n${text_2}` : `${text_1} ${text_2}`
}
})();