美文网首页
Node100行实现抓取新浪微博并且发送邮件提醒

Node100行实现抓取新浪微博并且发送邮件提醒

作者: 远浅 | 来源:发表于2017-02-28 23:35 被阅读95次

<p>Node使用100行代码实现抓取某用户最新内容且发送提醒,主要使用了superagent ,
cheerio,nodemailer,node-schedule四个模块代码如下,修改相关配置信息即可运行。
</p>

let request = require('superagent');
let cheerio = require('cheerio');
let nodemailer = require('nodemailer');
let schedule = require('node-schedule');
//UID获取可在想抓取的新浪微博用户首页查看源代码获得
//修改uid
let reqUrl = 'http://service.weibo.com/widget/widget_blog.php?uid=你要抓取的用户UID数字';
let oldVal;
let newVal;
//邮件服务器配置信息
let transport = nodemailer.createTransport({
//相关邮件服务器配置可在https://nodemailer.com/about/ 查看
    service: 'qq',//qq邮箱
    auth: {
        user: '发件邮箱账户',
        pass: '密码'
    }
});
//邮件发送配置选项
var options = {
    from: '发件邮箱账户',
    to: '目标账户',
    subject: '邮件主题!',
    text: '邮件内容'
};



function requestUrl(url) {

    //获得微博信息
    return request.get(url).then((res) => {
        var $ = cheerio.load(res.text);
        //内容
        var msgcontent = [];
        $('.wgtCell .wgtCell_con').each(function(index, dom) {
            var msg = {};
            msg.inner = $(this).find('.wgtCell_txt').text();
            msg.timer = $(this).find('.wgtCell_tm').text();
            msgcontent.push(msg);

        });


        console.log('最新微博:' + msgcontent[0].inner + ':' + msgcontent[0].timer);
        return msgcontent
    })

};

function tasks(url, ms, to) {
//url 完整请求地址
//ms 每分钟第几秒开始任务
//to 目标邮箱,接受邮件提醒的邮箱地址
    //获取任务启动时初始微博
    requestUrl(url).then(res => { oldVal = res[0].inner });

    //定时任务获取新微博
    schedule.scheduleJob({ second: ms }, () => {

        console.log('任务运行于:' + new Date());

        requestUrl(url).then(res => {
            //获得最新微博并且于初始值比对
            newVal = res[0].inner;
            if (oldVal != newVal) {
                //修改发送邮件配置项
                options.to = to;
                options.text = '你关注人发了微博:' + newVal + '于:' + res[0].timer;
                transport.sendMail(options, function(error, info) {
                    if (error) {
                        console.log('发送失败!' + error)
                    } else {
                        console.log('发送成功!' + to);
                        //发送邮件成功则重置初始微博
                        requestUrl(url).then(res => { oldVal = res[0].inner });
                    }
                })

            } else {
                console.log('微博未更新!')
            }


        });

    })


}

tasks('完整请求地址', '第几秒启动', '目标邮箱')

相关文章

  • Node100行实现抓取新浪微博并且发送邮件提醒

    Node使用100行代码实现抓取某用户最新内容且发送提醒,主要使用了superagent ,cheerio,nod...

  • [数据分析] 简书在微博上的分享情况

    抓取新浪微博中简书的分享数据进行简单分析。 在新浪微博上搜索“简书”关键字,抓取字段包括:用户名、微博内容,发表时...

  • php模拟登录新浪微博,解决微博rsa2加密方式登录问题

    最近公司需要使用新浪微博做营销活动,需要解决通过我们后台模拟微博登录,并向微博抓取数据。 通过抓包分析,新浪微博登...

  • 女神微博监控实现

    用到的知识:1、网络爬虫模块:每过1分钟爬一次牙牙的微博,有内容更新则通过邮件发送提醒自己;2、自动发送邮件模块:...

  • Scrapy抓取新浪微博

    项目概述:相信很多小伙伴都有用过新浪微博,因为这是当今很火的一款社交app。正因为这样,我们需要获取新浪微博中每一...

  • 女神微博监控实现+Python进阶路线图 !

    这个小项目的实现逻辑: 1、网络爬虫模块:每过1分钟爬一次牙牙的微博,有内容更新则通过邮件发送提醒自己,该功能可以...

  • python爬虫抓取新浪微博数据

    需求分析 抓取 琢磨先生的新浪微博 抓取的内容包括:微博发布的时间,正文(仅提取文字),转发数,评论数,点赞数 数...

  • 新浪微博第三方登录添加自动关注官微

    使用友盟来实现第三方登录,但是需要在新浪微博登录的时候添加关注官微的功能(下文简称为浪微),通过给友盟和新浪发邮件...

  • 随笔记

    在html页面中写一行代码实现发送邮件功能 Email 点击email链接,给XXX@163.com发送邮件,系统...

  • SKPSMTPMessage

    SKPSMTPMessage 可以自己实现邮件发送,采用系统的邮件发送会弹出邮件发送框,如果要求静默发送邮件可参照...

网友评论

      本文标题:Node100行实现抓取新浪微博并且发送邮件提醒

      本文链接:https://www.haomeiwen.com/subject/sswfgttx.html