CAPSOLVER
Blog
Lấy dữ liệu từ web bằng Puppeteer: Phát hiện thay đổi trang web và chụp ảnh màn hình

Web Scraping với Puppeteer: Phát hiện thay đổi website và chụp ảnh màn hình

Logo of CapSolver

Anh Tuan

Data Science Expert

07-Oct-2024

Web scraping đã trở thành một công cụ cần thiết để tự động hóa việc thu thập dữ liệu và theo dõi các thay đổi trên trang web. Trong bài đăng trên blog này, chúng ta sẽ khám phá cách sử dụng Puppeteer, một thư viện Node.js, để web scraping, phát hiện các thay đổi trên trang web và chụp ảnh màn hình những thay đổi đó.

Puppeteer là gì?

Puppeteer là một thư viện Node.js cung cấp API cấp cao để kiểm soát Chrome hoặc Chromium không có đầu qua giao thức DevTools. Nó có thể được sử dụng cho web scraping, thử nghiệm tự động, hoặc thậm chí tạo ảnh chụp màn hình và PDF của trang web.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt những thứ sau:

Bạn có thể cài đặt Puppeteer bằng cách chạy lệnh sau trong terminal của mình:

bash Copy
npm install puppeteer

Web scraping cơ bản với Puppeteer

Để bắt đầu, chúng ta hãy tạo một web scraper cơ bản điều hướng đến một trang web và trích xuất nội dung văn bản.

javascript Copy
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Điều hướng đến trang web
    await page.goto('https://example.com');

    // Trích xuất nội dung văn bản
    const content = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    console.log('Nội dung trang:', content);

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

Kịch bản này mở một trình duyệt không có đầu, điều hướng đến example.com và trích xuất văn bản từ phần tử <h1>. Bạn có thể thay thế URL bằng trang web bạn muốn scraping và điều chỉnh bộ chọn để phù hợp với phần tử bạn quan tâm.

Chụp ảnh màn hình với Puppeteer

Puppeteer cho phép bạn chụp ảnh màn hình của các trang web một cách dễ dàng. Bạn có thể chụp ảnh màn hình toàn trang hoặc các khu vực cụ thể trên trang.

Dưới đây là cách chụp ảnh màn hình toàn trang:

javascript Copy
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Điều hướng đến trang web
    await page.goto('https://example.com');

    // Chụp ảnh màn hình toàn trang
    await page.screenshot({ path: 'screenshot.png', fullPage: true });

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

Kịch bản này lưu ảnh chụp màn hình của toàn bộ trang dưới dạng screenshot.png. Bạn có thể sửa đổi path để chỉ định tên tệp hoặc vị trí khác.

Phát hiện thay đổi trang web

Theo dõi thay đổi trên trang web là một tính năng hữu ích trong web scraping. Bạn có thể đạt được điều này bằng cách liên tục kiểm tra nội dung của trang web và so sánh nó với phiên bản đã lưu trước đó.

Dưới đây là một ví dụ về việc phát hiện thay đổi văn bản và chụp ảnh màn hình nếu nội dung thay đổi:

javascript Copy
const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Điều hướng đến trang web
    await page.goto('https://example.com');

    // Trích xuất nội dung văn bản
    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    // Kiểm tra xem nội dung trước đó có tồn tại hay không
    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    // So sánh nội dung hiện tại với nội dung trước đó
    if (currentContent !== previousContent) {
        console.log('Nội dung đã thay đổi!');

        // Lưu nội dung mới
        fs.writeFileSync(previousContentPath, currentContent);

        // Chụp ảnh màn hình về sự thay đổi
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('Ảnh chụp màn hình đã được lưu!');
    } else {
        console.log('Không phát hiện thay đổi.');
    }

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

Trong ví dụ này:

  • Kịch bản trích xuất nội dung của phần tử <h1>.
  • Nó so sánh nội dung hiện tại với phiên bản đã lưu trước đó (previous-content.txt).
  • Nếu phát hiện thay đổi, nó sẽ chụp ảnh màn hình và lưu nó với dấu thời gian trong tên tệp, đảm bảo mỗi ảnh chụp màn hình là duy nhất.
  • Nội dung mới được lưu vào previous-content.txt để so sánh trong tương lai.

Lên lịch cho scraper chạy thường xuyên

Bạn có thể sử dụng Node.js để lên lịch cho kịch bản này chạy theo khoảng thời gian bằng cách sử dụng gói node-cron.

Đầu tiên, cài đặt node-cron:

bash Copy
npm install node-cron

Bây giờ, hãy sửa đổi kịch bản của bạn để chạy theo khoảng thời gian đã đặt (ví dụ: cứ 5 phút một lần):

javascript Copy
const puppeteer = require('puppeteer');
const fs = require('fs');
const cron = require('node-cron');

cron.schedule('*/5 * * * *', async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://example.com');

    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    if (currentContent !== previousContent) {
        console.log('Nội dung đã thay đổi!');
        fs.writeFileSync(previousContentPath, currentContent);
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('Ảnh chụp màn hình đã được lưu!');
    } else {
        console.log('Không phát hiện thay đổi.');
    }

    await browser.close();
});

Kịch bản này sẽ chạy cứ sau 5 phút (*/5 * * * *) và kiểm tra xem có thay đổi nào trên trang web hay không. Nếu phát hiện thay đổi, nó sẽ chụp ảnh màn hình và ghi nhật ký cập nhật.

Mã thưởng

Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu tại CapSolver: scrape. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, không giới hạn lần.

Kết luận

Puppeteer là một công cụ mạnh mẽ cho web scraping và tự động hóa các tác vụ trình duyệt. Trong bài đăng này, chúng ta đã chứng minh cách sử dụng Puppeteer cho web scraping cơ bản, phát hiện thay đổi trang web và chụp ảnh màn hình những thay đổi đó. Với những kỹ thuật này, bạn có thể theo dõi các trang web và theo dõi các cập nhật một cách tự động. Hãy chắc chắn kiểm tra chính sách web scraping để tránh vi phạm các điều khoản dịch vụ.

Copy

Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.

Thêm

Nâng cao tự động hóa doanh nghiệp:
Nâng cao Tự động hóa Doanh nghiệp: Cơ sở hạ tầng Dựa trên Mô hình Ngôn ngữ Lớn (LLM) cho Nhận dạng CAPTCHA Mượt mà & Hiệu quả Hoạt động

Khám phá cách cơ sở hạ tầng tự động hóa AI được cung cấp bởi Mô hình Ngôn ngữ lớn (LLM) đột phá trong việc nhận diện CAPTCHA, nâng cao hiệu quả quy trình kinh doanh và giảm thiểu sự can thiệp thủ công. Tối ưu hóa các quy trình tự động của bạn với các giải pháp xác minh tiên tiến.

ai
Logo of CapSolver

Anh Tuan

30-Mar-2026

Mở rộng thu thập dữ liệu cho huấn luyện LLM: Giải quyết CAPTCHAs tại quy mô lớn
Mở rộng thu thập dữ liệu cho huấn luyện LLM: Giải quyết CAPTCHAs ở quy mô lớn

Hãy học cách mở rộng thu thập dữ liệu cho việc huấn luyện mô hình LLM bằng cách giải CAPTCHAs quy mô lớn. Khám phá các chiến lược tự động để xây dựng các bộ dữ liệu chất lượng cao cho các mô hình AI.

AI
Logo of CapSolver

Ethan Collins

27-Mar-2026

Khắc phục Lỗi 1005 Cloudflare: Hướng dẫn và Giải pháp Thu thập dữ liệu web
Khắc phục Lỗi 1005 Cloudflare: Hướng dẫn Gỡ mã web và Giải pháp

Học cách khắc phục lỗi Cloudflare Error 1005 bị từ chối truy cập khi quét dữ liệu. Khám phá các giải pháp như proxy nhà ở, dấu vân tay trình duyệt và CapSolver cho CAPTCHA. Tối ưu hóa việc trích xuất dữ liệu.

Cloudflare
Logo of CapSolver

Adélia Cruz

27-Mar-2026

OpenBrowser Sử dụng CapSolver
Làm thế nào để giải CAPTCHA trong OpenBrowser bằng cách sử dụng CapSolver (Hướng dẫn tự động hóa AI Agent)

Giải CAPTCHA trong OpenBrowser bằng CapSolver. Tự động hóa reCAPTCHA, Turnstile và hơn thế nữa cho các tác nhân AI một cách dễ dàng.

AI
Logo of CapSolver

Anh Tuan

26-Mar-2026

HyperBrowser với CapSolver
Cách giải CAPTCHA bất kỳ trong HyperBrowser bằng CapSolver (Hướng dẫn cài đặt đầy đủ)

Giải bất kỳ CAPTCHA nào trong HyperBrowser bằng CapSolver. Tự động hóa reCAPTCHA, Turnstile, AWS WAF và nhiều thứ khác một cách dễ dàng.

AI
Logo of CapSolver

Anh Tuan

26-Mar-2026

Cách giải reCAPTCHA v2 Python và API
Cách giải reCAPTCHA v2 Python và API

Học cách giải reCAPTCHA v2 bằng Python và API. Hướng dẫn toàn diện này bao gồm các phương pháp Proxy và không dùng Proxy cùng với mã nguồn có thể triển khai cho tự động hóa.

reCAPTCHA
Logo of CapSolver

Rajinder Singh

25-Mar-2026