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 瀏覽器,並在終端機顯示內文