iT邦幫忙

0

RESTful_API

  • 分享至 

  • xImage
  •  

RESTful_API只有聽最後一堂

1.Lab_AJAX_Node.js
localhost:80


2.自動寄信
Lab_SendMail

ourNodeApp nodemailer Gamil > 寄信

(1)寄信的信箱變更安全性
在左邊側邊欄,點按「安全性」
如果「低安全性應用程式存取權」的狀態不是「開啟」,
請點一下「開啟存取權」

Note
請用分身帳號練習,或者在本練習之後,關閉存取權

(2)安裝 nodemailer

npm install nodemailer

(3)在本資料夾新建檔案,檔名: index.js,內容如下

    var nodemailer = require("nodemailer");
    
    var transporter = nodemailer.createTransport({
        service: "gmail",
        auth: {
            user: "帳號",  // lab 3.2
            pass: "密碼" // lab 3.2
        }
    });
    
    var mailOptions = {
        from: "帳號",  // lab 3.3
        to: "寄給誰?", // lab 3.3
        subject: "用程式寄信給自己",  // lab 3.5
        // text: "Mail body (Text)",  // lab 3.6
        html: "<h1>Heading</h1><a href='https://en.wikipedia.org/'>Wiki</a>"
    };
    
    transporter.sendMail(mailOptions, function(error, info){
        if (error) {
            console.log(error);
        } else {
            console.log("訊息發送: " + info.response);
        }
    });

(4)在終端機視窗,輸入

node index.js

(5)收信


3.爬蟲
Lab_Puppeteer(爬蟲) > lab.js

(1)安裝 Puppeteer

npm install puppeteer

(2)在本資料夾建立新的 JavaScript 檔案(lab.js)

    const puppeteer = require('puppeteer');

    async function main () {
    const browser = await puppeteer.launch({headless: false}); //1.啟動瀏覽器
    const page = await browser.newPage(); //2.開一個頁籤
    //3.瀏覽這頁
    await page.goto('https://www.taipower.com.tw/TC/news2.aspx?mid=225', {waitUntil: 'networkidle2'});

    // 跑完網頁會拍照儲存成example.png,並關閉
    // await page.screenshot({path: 'example.png'});
    // await browser.close();

    // 跑到網頁,按右上focus輸入earth,並按下方向鍵"下"
    // await page.goto('https://en.wikipedia.org/wiki/Wiki', {waitUntil: 'networkidle2'});
    // await page.focus("#searchInput");
    // await page.keyboard.type('earth');
    // await page.keyboard.press('ArrowDown');
    // await page.keyboard.press('\n');    

    // 模擬滑鼠點一下
    // (await page.$("#searchButton")).click();
    //  await delay(1000);
    //  await page.keyboard.press('ArrowDown');
    //  await page.keyboard.press('\n');
    //  await delay(1000);
    //  await page.screenshot({path: 'example.png'});
    //  await browser.close();

    await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'}) //4.讓網頁加入JS

    // 5.擷取網頁內容
    var dataList = await page.evaluate( () => {
        let result = []; //6.網頁內容轉成陣列
        const $ = window.$; //7.把JS的$拿出來用
        let liList = $("#news_box3 > div.box_list > ul > li");
        liList.each(function (index, element) {  //第幾個,內容
            var newsItem = { //把每個li都拿出來
                newsUrl: $(element).find("a").prop("href"),
                newsTitle: $(element).find("a div h3").text(),
                newsTime: $(element).find("a div span").text()
            };
            result.push(newsItem); //8.加到陣列裡面
        })
        return result;
    })
    await browser.close();  //9.關掉網頁

    console.log(dataList); //10.顯示
}

main();

(3)在終端機視窗,執行程式

node lab.js

順利的話,會啟動 Google 瀏覽器,並在終端機顯示內文


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言