发布于 2026-01-06 0 阅读
0

网站地图入门 101 网站地图工具

网站地图入门

网站地图工具

我们能够在线搜索各种信息并获得相关结果,这本身就是一项了不起的技术成就,尤其是在搜索引擎需要处理如此庞大的数据规模的情况下。它们需要构建庞大的网站和内容索引,以便处理我们的查询,并将我们带到我们想要的内容。

之前谈到过“robots.txt”文件以及网络爬虫和网站运营者之间的关系。这是拼图中的一块,它帮助网络爬虫和网站运营者沟通,确定网站上哪些内容不应该被索引。

网站地图是另一个重要的组成部分。它是一种文件,可以帮助网络爬虫和搜索引擎了解您网站上的所有页面、它们的最后更新时间和更新频率。仅仅通过抓取内容中的链接是无法获取这些信息的。

简史

也许并不令人意外,我们应该感谢谷歌在 2005 年中期提出了站点地图文件的概念。

《磨坊主》电视节目语录——托德说

2006 年 11 月,雅虎和微软加入谷歌的行列,支持“Sitemap 0.9”架构标准

不久之后,他们联合宣布支持“Robots.txt”文件中的一项非标准功能,允许它们指向网站站点地图的位置。

例如,以下是dev.to 的 robots 文件,其中指向站点地图的位置:

# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
# User-agent: *
# Disallow: /

Sitemap: https://thepracticaldev.s3.amazonaws.com/sitemaps/sitemap.xml.gz
Enter fullscreen mode Exit fullscreen mode

格式

网站地图有三种格式:XML、TXT 和 RSS。

XML站点地图

这些很可能是你唯一会实际使用的站点地图格式,也是规范中定义的核心格式。不过,并非所有 XML 站点地图都相同,因为它们有两种不同的类型。

普通站点地图文件

您有多个<url>标签,它们都必须有一个<loc>标签,但可以选择性地包含<lastmod><changefreq><priority>标签。

<loc>标签就是您网站上页面的绝对 URL。

<lastmod>标签有助于指示页面的“新鲜度”。虽然爬虫程序可能会根据此值进行优先级排序,但我并不建议为了钻空子而不断将最后修改日期更新为当前日期。

<changefreq>标签只是给爬虫程序的一个指导原则,不要以为将其设置为“每小时”就会让网络爬虫程序立即更频繁地抓取你的网站。

这个<priority>标签并非用于定义该页面相对于其他网站的重要性,而是用于定义网络爬虫抓取该页面的重要性。如果未设置,则默认值为“0.5”。

规范中的示例 XML 站点地图:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.example.com/</loc>
      <lastmod>2005-01-02</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
   <url>
      <loc>http://www.example.com/catalog?item=12&amp;desc=vacation_hawaii</loc>
      <changefreq>weekly</changefreq>
   </url>
   <url>
      <loc>http://www.example.com/catalog?item=73&amp;desc=vacation_new_zealand</loc>
      <lastmod>2004-12-23</lastmod>
      <changefreq>weekly</changefreq>
   </url>
   <url>
      <loc>http://www.example.com/catalog?item=74&amp;desc=vacation_newfoundland</loc>
      <lastmod>2004-12-23T18:00:15+00:00</lastmod>
      <priority>0.3</priority>
   </url>
   <url>
      <loc>http://www.example.com/catalog?item=83&amp;desc=vacation_usa</loc>
      <lastmod>2004-11-23</lastmod>
   </url>
</urlset>
Enter fullscreen mode Exit fullscreen mode

网站地图索引文件

根据标准,普通的站点地图文件最多只能包含 5 万个 URL,最大大小为 50MB。虽然我不认为这种限制现在仍然有效,但它确实促成了站点地图索引文件的出现。

这些文件看起来很像普通的站点地图文件,但实际上只是指向其他站点地图。其中包含多个<sitemap>标签,每个标签都包含一个必填<loc>标签和一个可选<lastmod>标签。

规范中的示例索引站点地图:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>http://www.example.com/sitemap1.xml.gz</loc>
    <lastmod>2004-10-01T18:23:17+00:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>http://www.example.com/sitemap2.xml.gz</loc>
    <lastmod>2004-01-01</lastmod>
  </sitemap>
</sitemapindex>
Enter fullscreen mode Exit fullscreen mode

TXT 网站地图

这种类型的站点地图实际上移除了 XML 站点地图中的许多功能,例如最后修改日期或页面更新频率。

这种格式就是将每个要索引的 URL 放在新的一行,不包含任何其他数据。

http://www.example.com/
http://www.example.com/catalog?item=12&amp;desc=vacation_hawaii
http://www.example.com/catalog?item=73&amp;desc=vacation_new_zealand
Enter fullscreen mode Exit fullscreen mode

RSS站点地图

虽然 RSS 站点地图不像 TXT 站点地图那样受限,但它也有自身的问题,例如只能提供最近 URL 的信息。

您可以使用<link>标签来定义要索引的 URL,并使用标签<pubDate>来定义它上次修改的时间。

网站地图的未来

网站地图的主要规范没有改变,但正在开发一些其他类型的网站地图,例如视频网站地图图像网站地图和特殊的Google 新闻网站地图

谷歌也宣布支持多语言站点地图,用户可以为每个网址定义语言。

虽然未来可能会有所改变,但目前对这些附加站点地图类型的支持不如主要的 XML 站点地图那么广泛。

我写了点东西……

我最近的几篇文章之所以能引起共鸣,是因为我一直在开发一些库和工具来解决我自己的问题,这篇文章也不例外。

GitHub 标志 TurnerSoftware / SitemapTools

一个用于 .NET 的站点地图 (sitemap.xml) 查询和解析库。

图标

网站地图工具

一个用于 .NET 的站点地图 (sitemap.xml) 查询和解析库。

建造 Codecov NuGet

主要特点

  • 解析 XML 站点地图和站点地图索引文件
  • 处理 GZ 压缩的 XML 站点地图
  • 支持TXT格式的站点地图

许可和支持

Sitemap Tools 采用 MIT 许可证,可免费用于个人和商业项目。

我们为所有活跃的Turner Software 开源软件项目提供支持计划。这些支持计划包括专属邮件支持、项目使用方面的专家指导、优先错误修复等服务。这些支持计划有助于我们履行开源软件的承诺,为所有人提供更优质的软件。

笔记

例子

using TurnerSoftware.SitemapTools;

var sitemapQuery = new SitemapQuery();
var sitemapEntries = await sitemapQuery.GetAllSitemapsForDomainAsync("example.org");
Enter fullscreen mode Exit fullscreen mode



我在开发一个项目时需要解析站点地图文件,但却找不到现成的 .NET 库来完成这项工作。我的库的最新版本基于我自己开发的“Robots.txt”解析库(用于发现站点地图文件),并支持 XML 站点地图(包括普通站点地图和索引站点地图)以及 TXT 站点地图。

这个库和我的“Robots.txt”解析库实际上是为第三个库做准备的,我将来会写一篇文章介绍它。

更多信息

文章来源:https://dev.to/turnersoftware/sitemaps-101-4ch8