如何生成大型网站的图形化站点地图

4
我想为我的网站生成一个图形化的站点地图。据我所知,这有两个阶段:
1.爬取网站并分析链接关系以提取树形结构。 2.生成视觉上令人愉悦的树形渲染。
有人有经验或建议实现这一点吗?或者知道我可以在其基础上建立的现有工作(最好是使用Python)?
我发现了一些漂亮的CSS用于呈现树形结构,但它仅适用于3个级别。
谢谢

网站通常是图形而不是树形结构,这可能会让事情变得复杂。 - leonm
嗯,说得好 - 我的网站有一个侧边导航栏。也许可以通过使用最强的链接从图形中形成一棵树。 - hoju
+1 对于SlickMap CSS链接的推荐。http://astuteo.com/slickmap/ 提供了树形结构的美观可视化展示。 - scunliffe
3个回答

4
唯一自动创建网站地图的方法是了解您网站的结构并编写程序来构建该结构。仅爬行链接通常不起作用,因为链接可以在任何页面之间设置,因此您会得到一个图形(即节点之间的连接)。在一般情况下无法将图形转换为树形结构。
因此,您必须自己识别您的网站树形结构,然后爬行相关页面以获取页面标题。
至于“但它只适用于3个级别”:三个级别已经足够了。如果您尝试创建更多级别,则您的网站地图将变得无法使用(太大,太宽)。没有人想要下载1MB的网站地图,然后滚动查看100,000个链接页面。如果您的网站增长到如此之大,那么您必须实现某种搜索功能。

3
这是一个Python网络爬虫示例,可作为良好的起点。您的一般策略如下:
  • 您需要确保不会跟踪外部链接,包括同域但高于起始点的链接。
  • 在爬行时,网站收集了一个页面url哈希映射到每个页面中包含的所有内部url的列表。
  • 对此列表进行传递,为每个唯一的url分配一个标记。
  • 使用{token => [tokens]}的哈希生成Graphviz文件,该文件将为您布置出一个图形。
  • 将Graphviz输出转换为图片地图,其中每个节点链接到其对应的网页。
您需要这样做的原因是,正如leonm所指出的,网站是图形而不是树形结构,而布局图形比您可以在简单的JavaScript和CSS代码中完成的问题更难。 Graphviz非常擅长它所做的事情。

1
graphviz看起来是个不错的想法,虽然图形并不是非常吸引人。 - hoju

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接