爬取多个子目录,而无需使用X射线发送太多请求

时间:2018-09-27 01:08:43

标签: node.js foreach x-ray

我想抓取网站的子域。假设其中有20个。每个子域都有几页,因此我要提出很多请求。

我从来没有做过这样的事情。我的抓取习惯通常限制在几页之内,因此我不确定在尊重该网站的情况下会这样做。

这就是我要拥有的内容:我要抓取的每个子目录的链接数组,并将forEach()应用于该数组。

我正在使用节点和X射线进行这项工作:

    const Xray = require('x-ray')

    const x = Xray({
      filters: {
        trim: function (value) {
          return typeof value === 'string' ? value.trim() : value
        }
      }
    }).throttle(1, '1s').delay('1s', '3s')

    const mongoose = require('mongoose')
    const Article = require('./models/article.model')

    const links = ['https://www.page.com/directory_1/archives', 'https://www.page.com/directory_2/archives', 'https://www.page.com/directory_3/archives', etc]



    const scraping_page = () => {

    links.forEach((link) => {    
    //Here goes the scraping logic and saving of the data
    }
}

    module.exports = scraping_page

这是我的问题:这是一种好方法吗? forEach()在跳到下一个进程之前不会等待一个进程完成,对吧?

即使有节流阀和延迟,我也不确定是否向站点发送了太多请求。

是否有任何标准化或半标准化的方式?

谢谢。

0 个答案:

没有答案