NodeJS Web Crawling С помощью узла-сканера или простого сканера - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в сканировании веб-сайтов, и мне нужны некоторые указания по поводу этих двух сканеров Node JS.

Цель: моя цель - сканировать веб-сайт и получать ТОЛЬКО внутренние (локальные) URL-адреса в этом домене.Я не заинтересован в каких-либо данных страницы или очистки.Только URL.

Моя путаница: при использовании node-crawler или simplecrawler , должны ли они загружать целые страницы, прежде чем они вернут ответ?Есть ли способ только найти URL, ping может выполнить какой-то запрос на получение и, если ответ 200, просто перейти к следующей ссылке, фактически не запрашивая данные всей страницы?

Есть ли другой сканер NodeJS илипаук, который может запрашивать и регистрировать только URL-адреса?Моя задача - сделать сканирование максимально легким.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 мая 2018

Сканирование только HTML-страниц веб-сайта обычно довольно легкий процесс. Также необходимо загрузить тела ответов HTML-тел, чтобы иметь возможность сканировать сайт, поскольку в HTML выполняется поиск дополнительных URL-адресов.

simplecrawler настраивается так, что вы можете избежать загрузки изображений и т. Д. С веб-сайта. Вот фрагмент кода, который можно использовать для регистрации URL-адресов, которые посещает сканер, и предотвращения загрузки ресурсов с изображениями.

var Crawler = require("simplecrawler");
var moment = require("moment");
var cheerio = require("cheerio");

var crawler = new Crawler("http://example.com");

function log() {
    var time = moment().format("HH:mm:ss");
    var args = Array.from(arguments);

    args.unshift(time);
    console.log.apply(console, args);
}

crawler.downloadUnsupported = false;
crawler.decodeResponses = true;

crawler.addFetchCondition(function(queueItem) {
    return !queueItem.path.match(/\.(zip|jpe?g|png|mp4|gif)$/i);
});

crawler.on("crawlstart", function() {
    log("crawlstart");
});

crawler.on("fetchcomplete", function(queueItem, responseBuffer) {
    log("fetchcomplete", queueItem.url);
});

crawler.on("fetch404", function(queueItem, response) {
    log("fetch404", queueItem.url, response.statusCode);
});

crawler.on("fetcherror", function(queueItem, response) {
    log("fetcherror", queueItem.url, response.statusCode);
});

crawler.on("complete", function() {
    log("complete");
});

crawler.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...