我想抓取网站的子域。假设其中有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()在跳到下一个进程之前不会等待一个进程完成,对吧?
即使有节流阀和延迟,我也不确定是否向站点发送了太多请求。
是否有任何标准化或半标准化的方式?
谢谢。