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

时间:2009-11-04 09:07:59

标签: python web sitemap web-crawler

我想为我的网站生成图形站点地图。据我所知,有两个阶段:

  1. 抓取网站并分析链接关系以提取树结构
  2. 生成视觉上令人愉悦的树木渲染
  3. 有没有人有这方面的建议或经验,或者知道我可以构建的现有工作(理想情况下是Python)?

    我遇到了一些用于渲染树的nice CSS,但它只适用于3个级别。

    由于

3 个答案:

答案 0 :(得分:4)

创建站点地图的唯一自动方法是了解站点的结构并编写基于该知识的程序。只是抓取链接通常不会起作用,因为链接可以在任何页面之间,因此您可以获得图形(即节点之间的连接)。在一般情况下,无法将图形转换为树。

因此,您必须自己识别树的结构,然后抓取相关页面以获取页面的标题。

至于“但它仅适用于3个级别”:三个级别绰绰有余。如果您尝试创建更多级别,您的站点地图将变得无法使用(太大,太宽)。没有人会想下载1MB的站点地图,然后滚动100'000页的链接。如果您的网站变得那么大,那么您必须实施某种搜索。

答案 1 :(得分:3)

Here is a python web crawler,这应该是一个很好的起点。你的总体战略是:

  • 您需要注意永远不会遵循出站链接,包括同一域上但高于起点的链接。
  • 当您进行蜘蛛时,该网站会收集映射到每个页面中包含的所有内部网址列表的网页网址的哈希值。
  • 对此列表进行传递,为每个唯一网址分配一个令牌。
  • 使用{token =>的哈希值[令牌]}生成一个graphviz文件,为您布置图表
  • 将graphviz输出转换为imagemap,其中每个节点链接到其对应的网页

正如leonm所说,你需要做到这一切的原因是,网站是图形,而不是树木,而布局图形比在简单的javascript和css中做的更难。 Graphviz擅长它的功能。

答案 2 :(得分:1)

请参阅http://aaron.oirt.rutgers.edu/myapp/docs/W1100_2200.TreeView 关于如何格式化树视图。您也可以修改示例应用程序 http://aaron.oirt.rutgers.edu/myapp/DirectoryTree/index刮你的 页面如果被组织为HTML文件的目录。