Nghịch ngợm với Puppeteer


1. Puppeteer là gì?

Theo Puppeteer là một thư viện của Node.js cung cấp một API cấp cao để điều khiển Chrome hoặc Chromium trong chế độ headless sử dụng giao thức DevTools. Ngoài ra, nó cũng có thể được cấu hình để chạy Chrome hoặc Chromium với giao diện người dùng.

Điều này có nghĩa là bạn có thể kiểm soát các trình duyệt Chrome hoặc Chromium từ mã Node.js của bạn và thực hiện nhiều công việc khác nhau như chụp ảnh màn hình, xuất file PDF, crawl dữ liệu, kiểm thử giao diện và nhiều hơn nữa.

Có Thể Bạn Quan Tâm :   File Bak là gì? Cách mở và chuyển đổi file Bak dễ dàng nhất

2. Một số chức năng thông dụng

2.1 puppeteer.launch([options])

Hàm launch([options]) trả về một instance của trình duyệt với các tùy chọn cấu hình cho trình duyệt.

Một số tùy chọn:

  • product: Chọn trình duyệt, có thể là Chrome hoặc Firefox.
  • headless: Chạy trình duyệt trong chế độ headless hoặc không.
  • executablePath: Đường dẫn tới trình duyệt được sử dụng.
  • args: Các đối số bổ sung để lựa chọn phiên bản trình duyệt.

Hàm này trả về một Promise chứa instance của trình duyệt.

2.2 page.goto(url[, options])

Hàm này dẫn trình duyệt tới một URL cụ thể.

Các tham số:

  • url: Địa chỉ URL cần điều hướng.
  • options: Các tùy chọn khi điều hướng.

Hàm này trả về một Promise chứa Response nếu thành công.

2.3 page.pdf([options])

Hàm page.pdf() dùng để tạo file PDF từ trang web.

Có Thể Bạn Quan Tâm :   Mô hình State Machine trong Distributed Systems

Một số tùy chọn:

  • path: Đường dẫn lưu file PDF.
  • format: Định dạng trang web (ví dụ: A4).
  • printBackground: Đặt true nếu muốn in cả nền.

Hàm này trả về một Promise chứa dữ liệu của file PDF.

3. Cài đặt và sử dụng Puppeteer

Đầu tiên, hãy khởi tạo một project Node.js trong thư mục “test”.

Sau đó, cài đặt Puppeteer trong project:

Tiếp theo, hãy tạo file index.js để thực hiện các thao tác với Puppeteer.

3.1 Chụp ảnh màn hình

const puppeteer = require(‘puppeteer’); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘https://viblo.asia’); await page.screenshot({path: ‘example.png’}); await browser.close(); })();

Sau đó, chạy lệnh “node index.js” để xem kết quả.

3.2 Xuất file PDF

const puppeteer = require(‘puppeteer’); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘https://viblo.asia’, {waitUntil: ‘networkidle2’}); await page.pdf({ path: ‘viblo.pdf’, format: ‘A4’, printBackground: true, }); await browser.close(); })();

Có Thể Bạn Quan Tâm :   Lô gan là gì? Thống kê lô gan nhằm mục đích gì?

3.3 Chụp trang yêu cầu đăng nhập

const puppeteer = require(‘puppeteer’); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘https://viblo.asia/publish/post’, {waitUntil: ‘networkidle2’}); await page.screenshot({ path: ‘viblo-authenticate.png’}) await browser.close(); })();

Nếu bạn cần authenticate trang web trước khi chụp ảnh, bạn cần xác định cookie cho trang web. Dưới đây là một ví dụ:

const puppeteer = require(‘puppeteer’); (async () => { const cookie = { name: ‘viblo_auth’, value: ‘<your_cookie>’, domain: ‘viblo.asia’, url: ‘https://viblo.asia’, path: ‘/’, httpOnly: true, secure: true, }; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setCookie(cookie); await page.goto(‘https://viblo.asia/publish/post’, {waitUntil: ‘networkidle2’}); await page.screenshot({ path: ‘viblo-authenticate.png’}) await browser.close(); })()

Sau đó, chạy mã để xem kết quả.

Chúc bạn thành công và xin hẹn gặp lại trong các bài viết tiếp theo.

Tài liệu tham khảo:

https://developers.google.com/web/tools/puppeteer/

Back to top button