Nodejs next-page-kit 爬下一页这种页面的小工具
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
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 supportedaction
/hasNext
/getNext
: the logic
const n = new NextPage({
init() {
},
postInit() {
},
action($) {
},
hasNext($) {
},
getNext($) {
}
});
yield n.run()
n.run
n.run(url, options)
url
: the entryoptions
:enc
: the html encodinglimit
: page limit
Changelog
License
the MIT License http://magicdawn.mit-license.org
当然,下面是一个使用 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,请查阅其文档进行相应调整。