繁体   English   中英

处理请求正文节点

[英]Processing request body nodejs

因此,我一直在使用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;

如果找到正则表达式库,则可以在抓取时或在将字符串找回类似内容后应用正则表达式模式

<table>*</table>

那应该返回遵循<table> ANYTHING </table>模式的任何字符串

我用了tabletojson包

npm install-保存tabletojson

function requestAsync(url) {
return new Promise(function(resolve, reject) {
    request(url, function(err, res, body) {
        if (err) { return reject(err); }
        else {
            console.log(url)
            body = tabletojson.convertUrl(url, {
                forceIndexAsNumber: true,
            },
                (tableAsJson)=>{
                    return tableAsJson[3]
                })

            return resolve(body);
        }

    });
});
}

这就是功能,按预期工作。 输出有点混乱,但是您可以进行处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM