如何使用Node.js扫描网站并构建站点地图

时间:2016-01-11 09:55:19

标签: node.js sitemap

我正在尝试使用Node.js获取网站的站点地图。任何人都可以指出我该怎么做?

我目前正在查看https://github.com/cgiffard/node-simplecrawler,但我不确定如何阻止它实际抓取页面。我只需要链接,可能还需要结构化对象......

我希望这很清楚!

干杯, 小时。

2 个答案:

答案 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
});