【发布时间】:2021-01-07 20:49:21
【问题描述】:
我正在尝试解决脚本进入网站的问题,从其中获取前 10 个链接,然后继续访问这 10 个链接,然后继续访问前 10 个页面中的每一个中的下一个 10 个链接。直到访问的页面数为 1000。 这是它的样子: 我试图通过在承诺和递归中使用 for 循环来实现这一点,这是我的代码:
const rp = require('request-promise');
const url = 'http://somewebsite.com/';
const websites = []
const promises = []
const getOnSite = (url, count = 0) => {
console.log(count, websites.length)
promises.push(new Promise((resolve, reject) => {
rp(url)
.then(async function (html) {
let links = html.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g)
if (links !== null) {
links = links.splice(0, 10)
}
websites.push({
url,
links,
emails: emails === null ? [] : emails
})
if (links !== null) {
for (let i = 0; i < links.length; i++) {
if (count < 3) {
resolve(getOnSite(links[i], count + 1))
} else {
resolve()
}
}
} else {
resolve()
}
}).catch(err => {
resolve()
})
}))
}
getOnSite(url)
【问题讨论】:
标签: javascript node.js es6-promise request-promise