Javascript NodeJS Cheerio,scraping&;获取变量

Javascript NodeJS Cheerio,scraping&;获取变量,javascript,parsing,web-scraping,text-parsing,cheerio,Javascript,Parsing,Web Scraping,Text Parsing,Cheerio,我需要从一个没有API的站点获取一些统计数据。在检查了源代码之后,我看到了用于构建统计图形的数据(我需要) 我可以使用Request&Cheerio获得脚本标记: request(nodeUrl, function(error, res, body) { var $ = cheerio.load(body); var scripts = $('script').filter(function() { return ($(this).html().indexOf(

我需要从一个没有API的站点获取一些统计数据。在检查了源代码之后,我看到了用于构建统计图形的数据(我需要)

我可以使用Request&Cheerio获得脚本标记:

request(nodeUrl, function(error, res, body) {
    var $ = cheerio.load(body);

    var scripts = $('script').filter(function() {
        return ($(this).html().indexOf('Dygraph(document') > -1);
    });
    if (scripts.length === 1) {
        var text = $(scripts[0]).html();
        console.log(text);
    }
});
我需要的数据(使用js格式化程序以便于阅读并删除周围的所有其他脚本):

我只需要所有:[新日期(“2017/08/12”),0.199]


任何建议都很好。提前感谢。

您可以使用正则表达式解析数据

var re = /new Date\("([0-9]{4}\/[0-9]{2}\/[0-9]{2})"\), ([0-9]+\.[0-9]+)/g;
var m;
do {
    m = re.exec($(scripts[0]).html());

    // scraped data:
    // [new Date(m[1]), m[2]]
}
while (m)

谢谢!。我看到有一些空值,不是在日期(第一个参数)中,而是在值(第二个参数)中。我尝试了:[newdate(([0-9]{4}\/[0-9]{2}\/[0-9]{2})],(*),但它不匹配。例如:[new Date(“2017/10/29”),null]找到它:[new Date(([0-9]{4}\/[0-9]{2}\/[0-9]{2})],([0-9]\.[0-9]+|null)]
var re = /new Date\("([0-9]{4}\/[0-9]{2}\/[0-9]{2})"\), ([0-9]+\.[0-9]+)/g;
var m;
do {
    m = re.exec($(scripts[0]).html());

    // scraped data:
    // [new Date(m[1]), m[2]]
}
while (m)