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