html - 如何递归爬取url子目录?

标签 html node.js web-crawler subdirectory

大家好,我正在尝试编写一个网络爬虫程序,它接收网站的主 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/');

最佳答案

您应该得到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 进行调试吗?抓取会给网站带来沉重的负载,而使用新应用程序进行抓取可能会使情况变得更糟。

关于html - 如何递归爬取url子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451754/

相关文章:

javascript - 将事件监听器添加到索引元素

javascript - 变量的范围和更改 Node 中的全局变量

javascript - HTMLUnit 不适用于 AngularJS

python - 如何从收到的响应中抓取 html 代码?

html - 如何为两列保持单个 div 和相同的高度

android - 将 Facebook 访问 token 传递给评论框

javascript - node.js - 无法弄清楚如何使用 session-express 保存 session

javascript - Nodejs/Javascript 当每个数字超过 15 位时获取起始数字和结束数字之间的数字

php - 如何让 MediaWiki 忽略 Recommind 的页面浏览量?

html - href 链接不可点击或突出显示