无需客户端请求即可将站点抓取到服务器

时间:2018-07-30 04:21:48

标签: node.js web-scraping

我正在使用nodejs构建一个抓取应用程序,我希望它每天抓取某个网站两次。 现在,有一个问题。

我习惯做的是,在客户端,有人提出请求,应用程序会抓取数据并显示结果。

但是如果我希望应用程序一天只抓取两次,而无需客户端向服务器发出请求,该怎么办? 怎么做到的?

基本上,这是一个用户输入其搜索关键字的网站。 该应用每天都会搜索该关键字,并在页面上显示该关键字时通知用户。 因此,如何做到这一点而又无需用户每天搜索关键字?

似乎我们可以使用cron作业进行调度,并且抓取将每天两次或我选择的任何时间进行,但是问题是如何将数据从抓取发送到客户端? 还是如何通知站点用户已找到该关键字,他就可以访问该站点并进行查看?

2 个答案:

答案 0 :(得分:1)

  

但是如果我希望应用程序一天只抓取两次,而无需客户端向服务器发出请求,该怎么办?怎么做到的?

您使用任务计划程序,例如Cron

  

我如何通知网站用户找到了该关键字,他就可以访问该网站并进行查看?

有很多选择。

答案 1 :(得分:0)

request npm模块将允许您执行此操作。每隔10秒从外部API查询以下(服务器)应用程序:

const request = require('request');

function doRequest() {
    request('http://www.randomtext.me/api/', function (error, response, body) {
        console.log('error:', error); 
        console.log('statusCode:', response && response.statusCode); 
        console.log('body:', body); 

        // do whatever you need to do with you result
        // and notify the user (... not clear what channel you want to use)
        // could be done with sockets, email, ... or text messages (twillio) ...
    }); 
}

setInterval(doRequest, 10000); // <-- adapt your intervall here

所以这是服务器到服务器请求的简单示例……希望能帮上忙。