【问题标题】:How to recursively crawl the url subdirectories?如何递归爬取url子目录?
【发布时间】:2020-06-12 13:25:53
【问题描述】:

大家好,我正在尝试编写一个网络爬虫程序,它接收网站的主 URL 并爬取网站的子目录。我已经被困在这很长一段时间了。有人可以帮我吗?非常感谢您!

这是我想要获得的示例输出:

https://www.dintaifung.com.sg/index.php的标题:新加坡鼎泰丰

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/');

【问题讨论】:

    标签: html node.js web-crawler subdirectory


    【解决方案1】:

    你应该得到a callback for each page crawled。传入的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 类似的操作来搜索爬虫检索到的页面的正文(“遍历文档对象模型”)。如果您想查看原始正文文本,则会显示在res.body。但请记住,它看起来与您抓取的页面的查看源代码完全一样。

    提示:我可以建议您使用maxConnections: 2 而不是10 进行调试吗?抓取会给网站带来沉重的负担,而使用新应用抓取可能会使情况变得更糟。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 2017-09-29
      • 1970-01-01
      • 2010-12-31
      • 2017-03-26
      • 1970-01-01
      相关资源
      最近更新 更多