3 个不稳定版本
0.2.1 | 2023年8月13日 |
---|---|
0.2.0 | 2023年8月13日 |
0.1.0 | 2023年8月13日 |
#2910 在 解析器实现
19KB
367 行
auto sitemap
通过跟踪单个页面的更改来保持您网站 站点地图 的更新。
安装
cargo add auto_sitemap
用法
// Crawls https://example.com
let mut new_sitemap = auto_sitemap::Sitemap::generate_by_crawling("https://example.com")
.await
.unwrap();
// Downloads the old sitemap.
let old_sitemap = auto_sitemap::Sitemap::import("https://example.com/sitemap.xml")
.await
.unwrap();
// Combines with URLs from the old site.
// If a hash of a page is different, its `lastmod` value is updated.
new_sitemap.combine_with_old_sitemap(&old_sitemap).unwrap();
// Serializes the sitemap to a string.
let mut buf = std::io::BufWriter::new(Vec::new());
new_sitemap.serialize(&mut buf).unwrap();
println!("{}", String::from_utf8(buf.into_inner().unwrap()).unwrap());
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/</loc>
<lastmod>2023-08-13T11:30:46Z</lastmod>
<xhtml:meta name="auto_sitemap_md5_hash" content="1f0e8893210f6496401d171ff77c7e92" />
</url>
</urlset>
它是如何工作的?
auto_sitemap
爬取您的网站。每个发现的 URL 和对应页面的内容哈希存储在站点地图中。当下次生成站点地图时,它将检查特定页面的哈希是否已更改;如果是,则将页面的 lastmod
更新为当前时间。
依赖关系
~19–33MB
~597K SLoC