我正在尝试使用Node.js获取网站的站点地图。任何人都可以指出我该怎么做?
我目前正在查看https://github.com/cgiffard/node-simplecrawler,但我不确定如何阻止它实际抓取页面。我只需要链接,可能还需要结构化对象......
我希望这很清楚!
干杯, 小时。
答案 0 :(得分:2)
我不确定,但我对这个工具不满意, 我使用crawler包编写了一些代码,它自动构建了一个站点地图
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
@IBOutlet weak var labelHeight: NSLayoutConstraint!
private var isHidden: Bool = false
@IBAction func clickButtonOne(sender: UIButton) {
isHidden = !isHidden
var alpha: CGFloat = 1
if isHidden {
alpha = 0
labelHeight.constant = 0
} else {
labelHeight.constant = 60
}
UIView.animateWithDuration(1.0, animations: {
() -> Void in
self.button.alpha = alpha
self.view.layoutIfNeeded()
}, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
希望它有所帮助
答案 1 :(得分:0)
我发现了一个非常有用的命令行工具,可以用节点编写。我发现它的源代码在该任务中非常有用。以下是软件包存储库的链接:https://github.com/lgraubner/node-sitemap-generator-cli
以下是我最终使用的代码:
var Crawler = require('simplecrawler');
var port = 80;
var exclude = ['gif', 'jpg', 'jpeg', 'png', 'ico', 'bmp', 'ogg', 'webp',
'mp4', 'webm', 'mp3', 'ttf', 'woff', 'json', 'rss', 'atom', 'gz', 'zip',
'rar', '7z', 'css', 'js', 'gzip', 'exe'];
var exts = exclude.join('|');
var regex = new RegExp('\.(' + exts + ')', 'i'); // This is used for filtering crawl items.
var crawler = new Crawler('www.website.com');
var pages = []; // This array will hold all the URLs
// Crawler configuration
crawler.initialPort = port;
crawler.initalPath = '/';
crawler.addFetchCondition(function (parsedURL) {
return !parsedURL.path.match(regex); // This will reject anything that's not a link.
});
// Run the crawler
crawler.start();
crawler.on('fetchcomplete', function(item, responseBuffer, response) {
pages.push(item.url); // Add URL to the array of pages
});