网站地图入门
网站地图工具
我们能够在线搜索各种信息并获得相关结果,这本身就是一项了不起的技术成就,尤其是在搜索引擎需要处理如此庞大的数据规模的情况下。它们需要构建庞大的网站和内容索引,以便处理我们的查询,并将我们带到我们想要的内容。
我 之前谈到过 “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& desc=vacation_hawaii</loc>
<changefreq> weekly</changefreq>
</url>
<url>
<loc> http://www.example.com/catalog?item=73& desc=vacation_new_zealand</loc>
<lastmod> 2004-12-23</lastmod>
<changefreq> weekly</changefreq>
</url>
<url>
<loc> http://www.example.com/catalog?item=74& 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& 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&desc=vacation_hawaii
http://www.example.com/catalog?item=73&desc=vacation_new_zealand
Enter fullscreen mode
Exit fullscreen mode
RSS站点地图
虽然 RSS 站点地图不像 TXT 站点地图那样受限,但它也有自身的问题,例如只能提供最近 URL 的信息。
您可以使用 <link>标签来定义要索引的 URL,并使用标签 <pubDate>来定义它上次修改的时间。
网站地图的未来
网站地图的主要规范没有改变,但正在开发一些其他类型的网站地图,例如 视频网站地图 、 图像网站地图 和特殊的 Google 新闻网站地图 。
谷歌也 宣布支持多语言站点地图, 用户可以为每个网址定义语言。
虽然未来可能会有所改变,但目前对这些附加站点地图类型的支持不如主要的 XML 站点地图那么广泛。
我写了点东西……
我最近的几篇文章之所以能引起共鸣,是因为我一直在开发一些库和工具来解决我自己的问题,这篇文章也不例外。
一个用于 .NET 的站点地图 (sitemap.xml) 查询和解析库。
网站地图工具
一个用于 .NET 的站点地图 (sitemap.xml) 查询和解析库。
主要特点
解析 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