灵活的节点.js多功能爬行者库
#javascript #网络开发人员 #node #crawler

X-Crawl

X-Crawl是一个灵活的节点。JS多功能爬网库。用于爬网页,爬网界面,爬网文件和民意测验爬网。

如果您也喜欢X-Crawl,则可以给x-crawl repository一颗星星来支持它,谢谢您的支持!

特征

  • ð¥asyncsync - 只需将模式属性值更改为开关异能或同步爬行模式。
  • â€多个功能 - 它可以爬网页,爬网界面,爬网文件和轮询爬网,并支持爬网。
  • - 灵活的写作样式 - 简单的目标配置,详细的目标配置,混合目标数组配置和高级配置,相同的爬网API可以适应多种配置。
  • ð设备指纹 - 零配置或自定义配置,以避免指纹识别和从不同位置跟踪我们。
  • ±!±间隔爬行 - 没有间隔,固定间隔和随机间隔可以产生或避免同时发生。
  • ð重试失败 - 全球设置,本地设置和个别设置,它可以避免暂时问题引起的爬行失败。
  • ð优先级队列 - 根据单个爬行目标的优先级,它可以在其他目标之前爬行。
  • - 抓取spa - 爬网SPA(单页应用程序)生成预渲染的内容(又称“ ssr”(服务器端渲染))。
  • 控制页面 - 无头浏览器可以提交表格,击键,事件操作,生成页面的屏幕截图等。
  • ð§¾捕获记录 - 捕获和记录爬行结果和其他信息,并在控制台上突出显示提醒。
  • ð€typescript - 自己的类型,通过仿制药实现完整的类型。

例子

以每天自动为Airbnb Hawaii体验和加上列表的一些图片为例:

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

// 2.Create a crawler instance
const myXCrawl = xCrawl({ maxRetry: 3, intervalTime: { max: 3000, min: 2000 } })

// 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 res = await myXCrawl.crawlPage([
    'https://zh.airbnb.com/s/hawaii/experiences',
    'https://zh.airbnb.com/s/hawaii/plus_homes'
  ])

  // Store the image URL to targets
  const targets = []
  const elSelectorMap = ['.c14whb16', '.a1stauiv']
  for (const item of res) {
    const { id } = item
    const { page } = item.data

    // Gets the URL of the page's wheel image element
    const boxHandle = await page.$(elSelectorMap[id - 1])
    const urls = await boxHandle!.$$eval('picture img', (imgEls) => {
      return imgEls.map((item) => item.src)
    })
    targets.push(...urls)

    // Close page
    page.close()
  }

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

运行结果:

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

更多的

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