灵活的nodejs爬网库 - X-Crawl
#javascript #typescript #node #crawler

X-Crawl

X-Crawl是一个灵活的Nodejs爬网库。它可以分批爬网,分批网络请求,以批量下载文件资源,投票和爬行等。支持异步/同步模式爬网。在nodejs上运行,用法灵活且简单,对JS/TS开发人员友好。

如果您感觉良好,可以给x-crawl repository一个恒星支持它,您的明星将成为我更新的动力。

  • ð¥异步/同步 - 支持异步/同步模式批处理。
  • - 多功能 - 页面的批处理,批处理网络请求,文件资源下载批处理,投票crawling等等。
  • - 灵活的写作样式 - 多个爬行配置和获得爬行结果的方法。
  • ±!±间隔爬行 - 无间隔/固定间隔/随机间隔,您可以使用/避免并避免并发。
  • - 抓取spa - 批处理爬网SPA(单页应用程序)生成预渲染的内容(即“ ssr”(服务器端渲染))。
  • 控制页面 - 无头浏览器可以提交表格,击键,事件操作,生成页面的屏幕截图等。
  • ð§¾捕获记录 - 捕获并记录爬行结果,并突出显示提醒。
  • ð¾Typescript - 自己的类型,通过仿制药实现完整类型。

例子

时序捕获:每天以Airbnb Plus清单的封面图像为例:

// 1.Import module ES/CJS
import xCrawl from 'x-crawl'

// 2.Create a crawler instance
const myXCrawl = xCrawl({
  timeout: 10000, // overtime time
  intervalTime: { max: 3000, min: 2000 } // crawl interval
})

// 3.Set the crawling task
/*
  Call the startPolling API to start the polling function,
  and the callback function will be called every other day
*/
myXCrawl.startPolling({ d: 1 }, async (count, stopPolling) => {
  // Call crawlPage API to crawl Page
  const { page } = await myXCrawl.crawlPage('https://zh.airbnb.com/s/*/plus_homes')

  // set request configuration
  const plusBoxHandle = await page.$('.a1stauiv')
  const requestConfig = await plusBoxHandle!.$$eval('picture img', (imgEls) => {
    return imgEls.map((item) => item.src)
  })

  // Call the crawlFile API to crawl pictures
  myXCrawl.crawlFile({ requestConfig, fileConfig: { storeDir: './upload' } })

  // Close page
  page.close()
})

运行结果:

注意:不要随意爬行,您可以在爬行前检查 robots.txt 协议。这只是为了演示如何使用X-Crawl。

更多的

有关更多详细的文档,请检查:https://github.com/coder-hxl/x-crawl