Так что я делаю небольшой скребок для учебных целей, в конце концов, я должен получить древовидную структуру страниц на веб-сайте.Как создать рекурсивный скребок с javascript?
Я ударил головой, пытаясь получить правильные запросы. Это более или менее то, что у меня есть:
var request = require('request');
function scanPage(url) {
// request the page at given url:
request.get(url, function(err, res, body) {
var pageObject = {};
/* [... Jquery mumbo-jumbo to
1. Fill the page object with information and
2. Get the links on that page and store them into arrayOfLinks
*/
var arrayOfLinks = ['url1', 'url2', 'url3'];
for (var i = 0; i < arrayOfLinks.length; i++) {
pageObj[arrayOfLinks[i]] = scanPage[arrayOfLinks[i]];
}
});
return pageObj;
}
Я знаю, что этот код не так на многих уровнях, но это должно дать вам представление о том, что я пытаюсь сделать.
Как изменить его, чтобы он работал? (Без использования обещаний, если это возможно)
(можно предположить, что веб-сайт имеет древовидную структуру, так что каждая страница имеет только ссылки на страницы, далее вниз по три, следовательно, рекурсивный подход)
Возможно, вам понадобится html-синтаксический анализатор. Попробуйте googling что-то вроде «javascript html parser» ... – Daniel
Спасибо, но это не имеет никакого отношения к моему вопросу. Я анализирую html с помощью cheerio (реализация jQuery node.js), моя проблема заключается в том, как обрабатывать рекурсивное построение моего объекта. – Gloomy
Самая большая проблема здесь - добиться рекурсивного поведения из-за асинхронного характера для javascript. – AJS