@NooooN
Секьюрник, гык. Лавки вебчик за 300.

Как пишется паук phantomjs?

Нашел как скачать ссылки со страницы, вот пример кода:

var sys = require('system');//подключаем модуль system
var page = require('webpage').create();//подключаем модуль webpage
var siteUrl = 'http://kselax.ru/';//урл куда откуда парсим

function exit(code) {//функция для выхода
    setTimeout(function() {
        phantom.exit(code);
    }, 0);
    phantom.onError = function(){};
}

page.open(siteUrl, function(status) {
    // Данный статус указывает, что ссылка открылась
    // успешно и вернулся ответ сервера с кодом 200
    if (status === 'success') {
        //подключаем jQuery
        page.injectJs('/js/jquery.js');//подключаем JQuery
        // Выполняем весь CSS, JS код на странице
        var Links = page.evaluate(function() {
            var links = $('html').find('a');//ищем все линки
            var hrefs = [];//создаем переменную массив

            $.each(links, function(num, item) {//num наверно индекс, а item походу элемент
                var href = $(item).attr('href');
                if (href !== '#') {//если не решетка то добавляем в массив
                    hrefs.push(href);//вставляем в массив
                }
            });

            return hrefs;//возвращаем массив, он запишется в
            //переменную Links
        });

        // Вывод результата через обычный console.log
        console.log(JSON.stringify(Links));
    }

    // Закрываем PhantomJS
    exit();
});


Помогите усовершенстовать алгоритм, как сделать чтобы все ссылки уникальные добавлялись в массив, т.е мы вытащили все ссылки и начинаем вытаскивать их со всех ресурсов что нашли и так далее рекурсией, ограниченной, например не больше 30 по вложенности ссылке. Как это сделать, спасибо!
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 1
JackShcherbakov
@JackShcherbakov
Для сборки уникальных значений вам нужен Set. Он хранит только уникальные значения, остальное игнорирует. MDN - https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы