puppeteer爬蟲-爬取豆瓣電影

具體使用請參看 Puppeteer官網

puppeteer爬蟲和通常爬蟲的區別

爬蟲是一個模擬人類請求網站行爲的程序。不少爬蟲程序是經過請求http獲取數據,用puppeteer作爬蟲是經過DevTool協議控制Chrome或Chromium來抓取頁面信息node

puppeteer下載

兩種模式git

1.完整模式(自動下載最新版的Chrome)github

npm i puppeteer
...
const puppeteer = require('puppeteer');

2.簡潔模式(手動指定Chrome路徑)chrome

npm i puppeteer-core
...
const puppeteer = require('puppeteer-core');
puppeteer.launch({
    executablePath:Chrome.exe // 指定Chrome或Chromium路徑
})

爬取豆瓣電影

直接上代碼npm

const puppeteer = require('puppeteer-core');

const launchConfig = {
    headless: false,
    executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
    slowMo: 1000,
    defaultViewport: {
        width: 1600,
        height: 900,
    }
}

puppeteer.launch(launchConfig).then(async browser => {
    const page = await browser.newPage();
    await page.goto('https://movie.douban.com/cinema/nowplaying/beijing/');
    const result = await page.evaluate(() => {
        const items = document.querySelectorAll('#nowplaying > div.mod-bd > ul >li');
        const links = [];
        if (items.length >= 1) {
            items.forEach((item) => {
                const data = Array.from(item.attributes);
                const link = {};
                data.forEach((v) => {
                    link[v.nodeName] = v.value;
                });
                const a = item.querySelector('.poster > a');
                const img = a.querySelector('img');
                link.href = a.getAttribute('href');
                link.src = img.getAttribute('src');
                links.push({
                    ...link,
                });
            });
        }
        return links;
    });
    console.log('result', result)
    await browser.close();
});

效果圖

puppeteer.gif
圖片.png

關於page.evaluate()API

爲何在page.evaluate()函數中就能夠使用原生DOM操做呢?api

Puppeteer 是一個 Node 庫,它提供了一個高級 API 來經過 DevTools 協議控制 Chromium 或 Chrome。

page.evaluate()至關於經過DevTools協議調用了瀏覽器的控制檯,將它的回調所有拿到了控制檯中執行,在瀏覽器的控制檯中咱們是能夠用原生操做來控制頁面的。
咱們把上文page.evaluate()中的回調拿到控制檯中執行,拿到的數據和上文的如出一轍
圖片.png瀏覽器

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息