iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0
DevOps

Puppeteer系列 第 14

Puppeteer & cheerio

  • 分享至 

  • xImage
  •  

介紹

實際透過 Puppeteer 來爬一個網站,選一個喜歡的網站這次來介紹一下cheerio

使用項目

 cheerio
 fs
 Puppeteer

照前幾篇的寫法 + cheerio 並使用fs 把得到的content 寫入到 檔案之中



import * as puppeteer from 'puppeteer';
import * as fs from 'fs'
import * as cheerio from 'cheerio'
(async () => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.ebay.com/rpp/moda-en');
  const html = await page.content()
  //fs.writeFile('content.html', html, _ => console.log('done'));
  //console.log(html)
  const $ = cheerio.load(html);
  const title = $('.title').text();
  console.log(title)

  await browser.close();
})();

一般會使用request或是curl來打網頁的html但是這樣並不會取到spa的動態部分的網頁,Puppeteer可以讓你操作網頁的內容後最後把content狀態存儲下來,如果有一個網頁很複雜是要做好幾個動作填完一推表單才拿到的最後想爬的狀態,開發階段就可以考慮使用這個content + fs 把資料爬下來

cheerio 是一個 jquery like的語法庫方便解析 html內容使用這邊可以看到 const title = $('.title').text(); 簡單的語法就可以取到字串,也可以配合正規化或是selector就像在下jquery那像去找到dom節點並取值

總結
cheerio 是一個很方便的 類jquery的語法,如果熟習jquery就是無痛上手馬上就可以來解析抓到的動態內容,
而Puppeteer對spa的操作當然就如前幾篇介紹的 click 或是更多動作都可以操作 ,記得如果很複雜的時候就先透過fs把資料先暫存不用一直去fetch資料 這樣會加快開發速度


上一篇
Puppeteer & Docker
下一篇
Puppeteer & evaluate
系列文
Puppeteer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言