首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS Cheerio,scraping & get变量

NodeJS Cheerio,scraping & get变量
EN

Stack Overflow用户
提问于 2017-12-09 02:31:02
回答 1查看 600关注 0票数 0

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

我能够使用Request &Cheerio获得脚本标记:

代码语言:javascript
复制
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格式化程序可以方便地读取和删除周围的所有其他脚本):

代码语言:javascript
复制
d = new Dygraph(document.getElementById("container"), [
    [new Date("2017/08/01"), 0.0654],
    [new Date("2017/08/02"), 0.257],
    [new Date("2017/08/03"), 0.245],
    [new Date("2017/08/04"), 0.15],
    [new Date("2017/08/05"), 0.107],
    [new Date("2017/08/06"), 0.109],
    [new Date("2017/08/07"), 0.143],
    [new Date("2017/08/08"), 0.222],
    [new Date("2017/08/09"), 0.166],
    [new Date("2017/08/10"), 0.156],
    [new Date("2017/08/11"), 0.143],
    [new Date("2017/08/12"), 0.199]
]);

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-09 03:51:12

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

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47724750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档