再上一篇有列出我們的操作順序
確認自己的目標後我們就開始實作吧
我們先開啟終端機(Terminal)並到我們專案目錄下
cd test-project
先安裝cheerio套件
如果寫過jqery那對cheerio的應用可以很快上手,看到$字號就知道了
如果沒寫過沒關係,我再這裡的應用不會很難
npm install cheerio
接著新增一個檔案app.js
touch app.js
打開你的編輯器在打開app.js
下面的操作都可以在套件的API文件中找到
先把目標指向網頁
const puppeteer = require('puppeteer');
//引入cheerio
const cheerio = require('cheerio');
(async () => {
const browser = await puppeteer.launch({
headless : true
});
const page = await browser.newPage();
await page.goto('https://ithelp.ithome.com.tw/ironman');
//先等待網頁載入到底下的section的html標籤,不然有時候執行太快抓不到網頁
await page.waitForSelector('section')
//把網頁的body抓出來
let body = await page.content()
//接著我們把他丟給cheerio去處理
let $ = await cheerio.load(body)
// await browser.close()
})();
接著我們開始搜尋要抓取的元素
我們開啟鐵人幫上面的網址
並再瀏覽器上使用 右鍵->檢查 開啟檢查工具或ctrl+shift+i
接著點選工具左上角的選擇元素工具
指向我們要選取元素,也就是標題
並把他的位置紀錄下來
加入己行到檔案下面
前面的html和body就不需要了因為是基本元素
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
(async () => {
const browser = await puppeteer.launch({
headless: true
//false 會讓瀏覽器實際開啟
//true 會再後台開啟
});
const page = await browser.newPage();
await page.goto('https://ithelp.ithome.com.tw/ironman');
await page.waitForSelector('section')
let body = await page.content()
let $ = await cheerio.load(body)
//我們把cheerio找到的資料轉成文字並存進data這個變數
let data = await $('div #ir-list div div ul.list-unstyled.ir-lists li.ir-list h3.ir-list__title a').text()
//並再終端機print出來
console.log(data)
await browser.close()
})();
存檔接著再終端機下
node app.js
就可以看到結果
03 從線性迴歸到感知器[Day 2] Swift 與 OC 的變數差異[Day 3] Machine learning介紹各種簡介Day3 - 一周目- 建立 第一個Node.js 專案Moodle-如何錄製影片 (Day3)使用 Docker - 基本操作DAY2 進擊の JavaScript瓶子裡裝甚麼藥,使用Flask輕輕鬆鬆打造一個RESTful API-DAY02Day3 : 建置Project
這邊看到很多筆
因為他把抓到相同的html的標籤下的文字都抓出來
所以會看到這一頁所有的標題
今天就先這樣
明天會教大家把觀看數也抓下來
並把每比資料分割下來
請問是否因為 2018年的 Puppeteer 沒有 query selector 功能,所以才配合 cheerio 使用?