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

X-Crawl是一个灵活的Nodejs爬网库。您可以爬网和控制操作,例如页面,批处理网络请求以及文件资源的批量下载。支持异步/同步模式爬网数据。在nodejs上运行,用法灵活且简单,对JS/TS开发人员友好。

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

特征

  • 支持异步/同步爬网的方式。
  • 灵活的写作,支持多种编写请求配置并获得爬网结果的方法。
  • 灵活的爬行间隔,由您决定/避免同时发生。
  • 使用简单的配置,可以执行诸如爬行页面,批处理网络请求和文件资源的批量下载之类的操作。
  • 具有调查功能定期爬网。
  • 内置的木偶器爬行页面,并使用JSDOM库来分析页面的内容,并支持自我分析。
  • 捕获攀登的成功和失败并突出提醒。
  • 用打字稿编写,具有类型,提供通用。

例子

常规爬网:每隔一天获取YouTube主页的推荐图片,例如:

// 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 }, () => {
  // Call crawlPage API to crawl Page
  myXCrawl.crawlPage('https://www.youtube.com/').then((res) => {
    // By default, the JSDOM library is used to parse Page
    const { browser, jsdom } = res 

    // Get the cover image element of the Promoted Video
    const imgEls = jsdom.window.document.querySelectorAll(
      '.yt-core-image--fill-parent-width'
    )

    // set request configuration
    const requestConfig = []
    imgEls.forEach((item) => {
      if (item.src) {
        requestConfig.push(item.src)
      }
    })

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

运行结果:

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

更多的

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