NodeJs的一次实用(定时抓取数据)

JavaScript055

NodeJs的一次实用(定时抓取数据),第1张

想定时抓取某个接口的数据,然后解析数据,通过邮件通知给我。

1、 https 用来发送网络请求

2、 node-schedule 用来实现定时任务

3、 nodemailer 用来发送邮件

介绍一下简单用法

我这里使用的QQ邮箱,使用第三方发送邮件需要打开授权,我这里开启的是 POP3/IMAP ,然后用授权码登录。 授权方法->

哈哈,还是比较成功的,达到了我预期的目标。

邮件接收的延迟比较大,大概3分钟左右,耐心等候,另外我在QQ邮箱的发件箱里没看到已发送的邮件,可能不会显示。

demo就不发了,比较简单,这几个模块组装起来就可以运行了。

       NodeJS做爬虫也是很方便的。因为nodejs有HTTP模块直接可以使用,而且还有很多简单粗暴的库可以即拿即用。       首先,需要的库文件,       1、superagent 是个轻量的的 http 方面的库,就像jquery的post,和get一样,很简单。       2、cheerio 是一个服务端操作DOM的库,简直就是服务端的jquery。     好的,我们需要抓取某个网站的题目。如下图。这个系统下,及时是游客状态也是可以查看题目的,只是答案我们看不到。会显示我没有登录。现在我们有个需求,先抓取15页,根据URL的参数可以页数就是地址中 的P。并且要有本地cookie,获取cookie的方法,最简单的是,利用浏览器登录网站之后,在控制台直接打印document.cookie,得到之后,复制进txt文本。用fs模块读取并转换成字符串。在superagent请求时,把cookie传进去。好了,控制台已经不输出“未登录”,说明已经登录成功了。

http的get请求一个目标网站,回调函数的参数是response,绑定两个事件,一个'data'事件,会不断触发获取数据,数据获取完触发’end‘ 事件。

爬到的的数据就是目标网站的html源代码。