Итак, я работал над этим приложением, используя nodejs, и мне нужно очистить несколько таблиц HTML с нескольких веб-сайтов. Я уже получил ответы на обещания. Но тело ответа - это строка целой страницы, это выглядит так.
output.json
[
[
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd",
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd"
]
]
Я удалил часть контента, но вы поняли идею.
У меня вопрос, как извлечь таблицу из этой строки. Или, может быть, я должен изменить подход?
server.js
var express = require('express');
var fs = require('fs-extra');
var request = require('request');
var cheerio = require('cheerio');
var tabletojson = require('tabletojson');
var app = express();
var baseURL = "https://guildstats.eu/bosses?world=Kenora&monsterName=";
var bosses = ["Ferumbras", "Ghazbaran"];
var bossesURL = []
var globalJson = [];
for (i = 0; i < bosses.length; i++) {
bossesURL.push(`${baseURL}${bosses[i]}`)
}
function requestAsync(url) {
return new Promise(function(resolve, reject) {
request(url, function(err, res, body) {
if (err) { return reject(err); }
else {
return resolve(body);
}
});
});
}
app.get("/scrape",(req,res)=>{
Promise.all(bossesURL.map(requestAsync))
.then(function(allData) {
globalJson.push(allData)
fs.writeFile('client/src/output.json',JSON.stringify(parsed,null,4))
console.log(parsed)
})
.catch((err) => {
console.log('Error:',err)
});
})
app.listen('8081');
exports = module.exports = app;