Как рекурсивно сканировать подкаталоги url? - PullRequest
1 голос
/ 28 февраля 2020

Привет всем, я пытаюсь запрограммировать сканер, который берет основной URL-адрес веб-сайта и сканирует подкаталоги веб-сайта. Я застрял в этом в течение достаточно долгого времени. Может ли кто-нибудь помочь мне с этим? Заранее большое спасибо!

Вот пример вывода, который я пытаюсь получить:

Название https://www.dintaifung.com.sg/index.php: Din Tai Fung Singapore

Название https://www.dintaifung.com.sg/about.php: Дин Тай Фунг - О нас

Название https://www.dintaifung.com.sg/ ...: Дин Тай Фунг -. ..

и так далее ...

var Crawler = require("crawler");

var c = new Crawler({
maxConnections : 10,
// This will be called for each crawled page
callback : function (error, res, done) {
    if(error){
        console.log(error);
    }else{
        var $ = res.$;
        // $ is Cheerio by default
        //a lean implementation of core jQuery designed specifically for the server
        console.log($("title").text());
    }
    done();
}
});

// Queue just one URL, with default callback
c.queue('https://www.dintaifung.com.sg/');

1 Ответ

0 голосов
/ 28 февраля 2020

Вы должны получить a callback за каждую просканированную страницу . Входящий параметр res описывает каждую страницу.

Попробуйте что-то подобное для своей функции обратного вызова.

callback : function (error, res, done) {
    if(error) {
        console.log(error);
    } else {
        const $ = res.$; 
        const title = $("title").text());           //find the page's title
        const url = res.request.uri.toString();     //get the fetched URL
        const display = `Title of ${url}: {title}`; //make your display string
        console.log(display);                       //display it
    }
    done();
}

$ позволяет вам использовать jQuery -подобные операции для поиска основного текста ("traverse" объектная модель документа ") страницы, найденной сканером. Необработанный основной текст отображается на res.body, если вы хотите его увидеть. Но имейте в виду, что он выглядит точно так же, как View Source ... для просканированной страницы.

Совет: Могу ли я предложить вам отладить это с помощью maxConnections: 2 вместо 10? Сканирование может создать большую нагрузку на сайт, а сканирование с новым мощным приложением может ухудшить ситуацию.

...