javascript - 如何使用 Puppeteer 获取页数?

标签 javascript node.js web-crawler google-chrome-devtools puppeteer

我是一个使用 Puppeteer 的爬行初学者。我成功抓取了以下网站。下面是从商城中提取特定产品名称的代码。

const express = require('express');
const puppeteer = require('puppeteer');
const app = express();

(async () => {

    const width = 1600, height = 1040;

    const option = { headless: true, slowMo: true, args: [`--window-size=${width},${height}`] };

    const browser = await puppeteer.launch(option);
    const page = await browser.newPage();
    const vp = {width: width, height: height};
    await page.setViewport(vp);

    const navigationPromise = page.waitForNavigation();

    // 네이버 스토어팜
    await page.goto('https://shopping.naver.com/home/p/index.nhn');
    await navigationPromise;
    await page.waitFor(2000);

    const textBoxId = 'co_srh_input';
    await page.type('.' + textBoxId, '양말', {delay: 100});
    await page.keyboard.press('Enter');

    await page.waitFor(5000);
    await page.waitForSelector('ul.goods_list');
    await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'});

    const result = await page.evaluate(() => {

        const data = [];

        $('ul.goods_list > li._itemSection').each(function () {

            const title = $.trim($(this).find('div.info > a.tit').text());
            const price = $(this).find('div.info > .price .num').text();
            const image = $(this).find('div.img_area img').attr('src');

            data.push({ title, price, image })

        });

        return data;

    });

    console.log(result);
    await browser.close();

})();

app.listen(3000, () => console.log("Express!!!"));

我有一个问题。如果我想从页数中获取信息,我该怎么办? 例如(1 页、2 页、3 页 ....)

最佳答案

将属性 footerTemplatedisplayHeaderFooter 一起用于最初使用 puppeteer API 的展示页面

await page.pdf({
  path: 'hacks.pdf',
  format: 'A4',
  displayHeaderFooter: true,
  footerTemplate: '<div><div class='pageNumber'></div> <div>/</div><div class='totalPages'></div></div>'
});

https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#pagepdfoptions

//footerTemplate 打印页脚的 HTML 模板。

//应该是有效的 HTML 标记,具有以下 CSS 类,用于将打印值注入(inject)其中:

//- 日期格式化的打印日期

//- 标题文档标题

//- url文档位置

//- pageNumber 当前页码

//- totalPages 文档中的总页数

关于javascript - 如何使用 Puppeteer 获取页数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294512/

相关文章:

javascript - 跳过第一个关于 knockout 自定义绑定(bind)的更新

node.js - 在发送给客户端之前劫持响应

seo - 仅允许 index.html 上的 SE 索引

javascript - 归内还是外为?

ruby-on-rails - Anemone 可以抓取本地存储在我硬盘上的 html 文件吗?

amazon-web-services - Nutch搜寻器无法缩放较大的网址

javascript - 将元素从开始位置动画到另一个元素的位置

javascript - 从 Rails 导出静态 HTML+CSS+JS

javascript - 如何使用 JS 在 Chrome 扩展中分配热键?