Nodejs next-page-kit 爬下一页这种页面的小工具

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs next-page-kit 爬下一页这种页面的小工具

本文首发于 CNodejs.org https://cnodejs.org/topic/576e0babd3baaf401780bb5f

------------------- 原文--------------------

RT. 就是下一页, 下一页这种...给抽象了一下... 这里有个抓取 V2EX 的栗子 https://github.com/magicdawn/next-page-kit/blob/v0.0.1/test/simple.js#L16 提供本页要干啥, 是否有下一页, 下一页地址... 最后得到一个结果...就是这样

下面是 README ---------------------------------我是分割线-----------------------------

next-page-kit

Helper for handle next-next page

Build Status Coverage Status npm version npm downloads npm license

Install

npm i next-page-kit -S

API

const NextPage = require('next-page-kit');

n = new NextPage

  • init/postInit : hook function. return a promise is also supported
  • action/hasNext/getNext: the logic
const n = new NextPage({
  init() {

}, postInit() {

},

action($) {

}, hasNext($) {

}, getNext($) {

} });

yield n.run()

n.run

n.run(url, options)
  • url: the entry
  • options:
    • enc: the html encoding
    • limit: page limit

Changelog

CHANGELOG.md

License

the MIT License http://magicdawn.mit-license.org


1 回复

当然,下面是一个使用 Node.js 和 next-page-kit(假设这是一个自定义的库或工具,因为标准的 Node.js 生态系统中并没有直接名为 next-page-kit 的库)来爬取分页页面的基本示例。为了说明,我将展示一个通用的爬虫逻辑,因为 next-page-kit 的具体 API 不详。

首先,确保你已经安装了所需的库,比如 axios 用于 HTTP 请求,cheerio 用于解析 HTML。

npm install axios cheerio

然后,创建一个 Node.js 脚本:

const axios = require('axios');
const cheerio = require('cheerio');

const url = 'http://example.com/page/1'; // 初始页面 URL

async function fetchNextPage(currentPageUrl) {
    try {
        const { data } = await axios.get(currentPageUrl);
        const $ = cheerio.load(data);

        // 解析下一页链接
        const nextPageLink = $('a.next-page').attr('href'); // 假设下一页链接有类名 'next-page'

        if (nextPageLink) {
            console.log(`Fetching: ${nextPageLink}`);
            // 递归调用以获取下一页
            await fetchNextPage(new URL(nextPageLink, currentPageUrl).href);
        } else {
            console.log('No more pages.');
        }
    } catch (error) {
        console.error('Error fetching page:', error);
    }
}

fetchNextPage(url);

这个脚本会递归地抓取每一页的链接,直到没有下一页为止。请根据实际情况调整选择器(如 $('a.next-page'))和 URL 处理逻辑。如果 next-page-kit 有特定的 API,请查阅其文档进行相应调整。

回到顶部