请求,cheerio和nodemailer模块来解析HTML网页并将特定部分通过电子邮件发送给最终用户

问题描述

创建一个名为artist.js的文件(或节点项目),该文件将抓取提供的网址: http://www.popvortex.com/music/charts/top-rap-songs.php并发送 特定歌手演唱的所有歌手和歌曲的电子邮件,通过 命令行。 要求: •必须通过命令行读入指定的艺术家 •如果未指定艺术家,请不要发送电子邮件 •如果在网站上找不到指定的艺术家,请不要发送 电子邮件 •如果在网站上找到指定的艺术家: –将电子邮件从您选择的电子邮件帐户发送到电子邮件 您选择的帐户(在测试时,我将输入自己的帐户 占这一部分) –主题为:“您的艺术家为:”,其后为 艺术家。确保正确格式化此部分,即如果用户 指定节点艺术家Drake Migos xxxtentacion,您的主题应该 是:您的艺术家是:Migos,Drake和xxxtentacion –电子邮件格式应为演出者加粗,歌曲名称为 斜体,见下文 1个 注意事项: •向网站提出过多请求时要小心,有可能受到速率限制 •只担心前25首歌曲,网站是动态的,有时 根据一天有更多或更少的歌曲。 •不用担心大小写,这取决于用户确保拼写正确 套管 •不用担心名字中有多个单词的艺术家 即Cardi B和Post Malone。虽然我们爱他们,但它使它变得棘手 从命令行读取时 •如果将演出者作为特色收录,请将该歌曲作为歌曲收录,即 搜索Migos,请添加曲目-Gucci Mane Feature Migos:我拿到了包

这是我到目前为止所拥有的,应该是...还是不太正常。

    var request = require('request');
    var cheerio = require('cheerio');
    var nodemailer = require('nodemailer');
    var artist = process.argv[2];



    request('http://www.popvortex.com/music/charts/top-rap-songs.PHP',function (error,response,html) {
        if (!error && response.statusCode == 200) {
            var $ = cheerio.load(html);
            $('em.artist').each(function (i,element) {
                if ($(this).text().trim() == artist) {
            console.log($(this).text() + ":" + 
    $(this).siblings('cite.title').text());
                }
            });

    
    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',port: 465,secure: true,auth: {
        user: 'dewittait618@gmail.com',pass:'xxxxxxxxxx'
        }
    });

     let mailOptions = {
            from: '"Andrew DeWitt" <dewittait618@gmail.com>',to: 'andrewmtsu@hotmail.com',subject: "Your artist(s) are: "+ artist,text: $,html:'<p></p>'
        };
        transporter.sendMail(mailOptions,info) {
            if (error) {
                console.log(error);
                return;
            }
            console.log('message send' + info.response);
                })
             }
         })

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)