大家好,我正在尝试编写一个Web爬网程序,该爬网程序采用一个网站的主URL并对该网站的子目录进行爬网。我已经在这个问题上停留了很长时间。有人可以帮我吗?提前非常感谢您!
这是我尝试获取的示例输出:
https://www.dintaifung.com.sg/index.php的标题:Din Tai Fung新加坡
https://www.dintaifung.com.sg/about.php的标题:Din Tai Fung-关于我们
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
进行调试吗?爬网会给网站带来沉重的负担,而使用新应用进行爬网会使情况变得更糟。