java使用sitemapgen4j生成网站的站点地图sitemap

什么是站点地图?可以看看百度百科的解释:https://baike.baidu.com/item/%E7%AB%99%E7%82%B9%E5%9C%B0%E5%9B%BE/9991876?fr=aladdin

简单理解就是:一个按照指定规则生成的xml文件,用于指引搜索引擎的爬虫去爬取索引你的网站。

生成网站sitemap的方法有很多,这里我使用的是sitemapgen4j这个第三方jar包。老规矩现在maven中引入依赖:

<dependency>
    <groupId>com.github.dfabulich</groupId>
    <artifactId>sitemapgen4j</artifactId>
    <version>1.1.1</version>
</dependency>

需要准备的内容就是你网站中需要被搜索引擎抓取的url地址,具体的使用及生成代码可以参考:

/**
 * 站点地图
 */
public class SitemapTest {

    /**
     * 日期格式化
     */
    private static final W3CDateFormat DATE_FORMAT = new W3CDateFormat(W3CDateFormat.Pattern.DAY);

    /**
     * 网站域名
     */
    private static final String DOMAIN = "http://www.3kkg.com/";

    public static void main(String[] args) {
        try {
            //获取sitemap的文件存放路径(这里测试使用直接使用临时文件夹)
            File sitemapDir = new File(FileUtil.getTmpDirPath() + File.separator + "sitemap");
            if (sitemapDir.exists()) {
                //空文件夹
                FileUtil.clean(sitemapDir);
            }else{
                //新建文件夹
                sitemapDir.mkdir();
            }
            //创建generator,通过generator生成站点地图
            WebSitemapGenerator generator = WebSitemapGenerator.builder(DOMAIN, sitemapDir)
                    .fileNamePrefix("index")
                    .dateFormat(DATE_FORMAT)
                    .build();
            //新建一个网页地址,有多少个网页就在这里新建多少个WebSitemapUrl对象
            //options这里填网页的url地址,lastMod填写网页最后一次修改时间
            String indexUrl = DOMAIN + "index.html";
            WebSitemapUrl indexSitemap = new WebSitemapUrl.Options(indexUrl).lastMod(new Date()).build();
            String url1 = DOMAIN + "1.html";
            WebSitemapUrl sitemap1 = new WebSitemapUrl.Options(url1).lastMod(new Date()).build();
            //将网页地址添加到generator
            generator.addUrl(indexSitemap);
            generator.addUrl(url1);
            //生成站点地图文件
            generator.write();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

因为百度这边规定一个sitemap文件包含的网址不得超过5万个,且文件大小不得超过10MB。所以如果你的sitemap超过了限制,可以将其拆分为几个小的sitemap,然后统一使用一个index.xml作为入口的sitemap,url的位置放其他的sitemap,这样百度也是可以索引到的。

本站的sitemap地址(仅供参考):/sitemap/index.xml


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍