x-crawl 是一个灵活的 Node.js 多功能爬虫库。灵活的使用方式和众多的功能可以帮助您快速、安全、稳定地爬取页面、接口以及文件。
如果你也喜欢 x-crawl ,可以在 GitHub 给 x-crawl 存储库 点个 star 支持一下,感谢大家的支持!
以每天自动获取世界各地的经历和房间的一些照片为例:
// 1.导入模块 ES/CJS
import xCrawl from 'x-crawl'
// 2.创建一个爬虫实例
const myXCrawl = xCrawl({ maxRetry: 3, intervalTime: { max: 2000, min: 1000 } })
// 3.设置爬取任务
// 调用 startPolling API 开始轮询功能,每隔一天会调用回调函数
myXCrawl.startPolling({ d: 1 }, async (count, stopPolling) => {
// 调用 crawlPage API 来爬取页面
const pageResults = await myXCrawl.crawlPage({
targets: [
'https://www.airbnb.cn/s/*/experiences',
'https://www.airbnb.cn/s/plus_homes'
],
viewport: { width: 1920, height: 1080 }
})
// 通过遍历爬取页面结果获取图片 URL
const imgUrls = []
for (const item of pageResults) {
const { id } = item
const { page } = item.data
const elSelector = id === 1 ? '.i9cqrtb' : '.c4mnd7m'
// 等待页面元素出现
await page.waitForSelector(elSelector)
// 获取页面图片的 URL
const urls = await page.$$eval(`${elSelector} picture img`, (imgEls) =>
imgEls.map((item) => item.src)
)
imgUrls.push(...urls.slice(0, 6))
// 关闭页面
page.close()
}
// 调用 crawlFile API 爬取图片
await myXCrawl.crawlFile({ targets: imgUrls, storeDirs: './upload' })
})
运行效果:
注意: 请勿随意爬取,爬取前可查看 robots.txt 协议。网站的类名可能会有变更,这里只是为了演示如何使用 x-crawl 。
1
coderhxl OP 快来体验一下吧
|
2
coderhxl OP 可以做自动化操作
|
3
ZnductR0MjHvjRQ3 277 天前 1
点个 star 先
|
5
laoona 277 天前 1
先 star
|
6
aikilan 277 天前 1
正好最近有需求,有时间拿来试试,已 star
|
9
stimw 277 天前 1
是对 puppeteer 的包装?为啥不用 playwright 呢。。
|
10
coderhxl OP crawlPage API 是用的 puppeteer ,puppeteer 使用者更多些。两者用法上很相似,后续也可以写个新的 API 加上 playwright 。
|
11
coderhxl OP @stimw crawlPage API 是用的 puppeteer ,puppeteer 使用者更多些。两者用法上很相似,后续也可以写个新的 API 加上 playwright 。
|
12
coderhxl OP |