saber酱的抱枕

Fly me to the moon

05/19
14:05
学习

抓取所有文章页并生成网站地图的JavaScript代码

我之前的sitemap文件里有很多链接是错误的,早期的时候本站页面还没有启用伪静态,那时候文章网址后面没带.html。今天我写了个代码来自动抓取本站的所有文章,并生成sitemap字符。

这个代码可能仅适用本站使用的clearision模板。用在其他模板或其他类型的网站的话可能就需要略作修改了。

ps:
WordPress最近更新后,本文的代码失效了。可能是因为WordPress把短链接做了301跳转导致抓取不到。现在使用《网站地图生成助手js版》

抓取所有文章页并生成网站地图的JavaScript代码

06/25
16:28
学习 软件

网站地图生成助手js版

// ==UserScript==
// @name         网站地图生成助手(Clearision主题专用)
// @namespace    https://saber.love
// @version      0.1
// @description  自动生成当前网页的sitemap信息(文章页)
// @author       saber
// @match        https://saber.love/*.html
// @grant        none
// ==/UserScript==

var sitemap_url = window.location.href; //url
var sitemap_pri = "0.5"; //权重
var changefreq = "Always"; //更新频率
var sitemap_year = new Date(); //年份
sitemap_year = sitemap_year.getFullYear(); // 因为主题生成的网页里没有包含年份,所以取当前年份
var sitemap_time_info = document.getElementsByClassName("post_time")[0].innerText.replace(/\n/g, "").replace(/\t/g, "").replace("/", "-").replace(" ", "");
var sitemap_date, sitemap_time; //时间和日期
if (sitemap_time_info.length === 9) {
	sitemap_date = sitemap_time_info.substring(0, 4).replace("-", "-0"); //天数在10号以下时前面没有0,所以需要补上0
	sitemap_time = sitemap_time_info.substring(4, 9);
} else if (sitemap_time_info.length === 10) {
	sitemap_date = sitemap_time_info.substring(0, 5);
	sitemap_time = sitemap_time_info.substring(5, 10);
}
window.stop(); //停止页面加载,可以节省图片流量
var this_sitemap_result = ("<url>" + "\r\n" + "<loc>" + sitemap_url + "</loc>" + "\r\n" + "<priority>" + sitemap_pri + "</priority>" + "\r\n" + ("<lastmod>" + sitemap_year + "-" + sitemap_date + "T" + sitemap_time + ":00+00:00</lastmod>") + "\r\n" + "<changefreq>" + changefreq + "</changefreq>" + "\r\n" + "</url>" + "\r\n"); //拼接出本页面的sitemap信息
localStorage.setItem("mymap", localStorage.getItem("mymap") + this_sitemap_result); //把本次的结果追加存储
var next_page = document.querySelector("#p_n_r a");
if (!!next_page) { //如果有下一页就自动打开下一页
	next_page.click();
} else { //如果没有下一页就弹出结果
	document.write("<xmp>" + localStorage.getItem("mymap") + "</xmp>");
	alert("sitemap信息生成完毕");
	localStorage.setItem("mymap", ""); //清空结果
}

本文代码是针对我这个网站写的,如果其他网站想要使用,可以对照自己网站进行修改。

使用方法:
在油猴里新建一个脚本,把下面的代码粘贴进去保存即可。之后打开或刷新本站任意一个网页,代码就会从这个页面一直抓取到最新的一篇文章,自动生成sitemap信息并存储到localStorage里。抓取完成后弹窗提醒,并把抓取结果输出到页面上。这样我们只需要等结果出来,最后复制结果就行了。

注意:
由于文章信息里没有包含年份,所以年份去的是当年。如果如在当年去获取之前的文章,那么年份就是错的。比如2018年1月去获取2017年12月的,结果会显示2018年12月。这个可以在获取后批量替换下。

使用之后记得关掉这个油猴脚本,以免影响正常浏览。

网站地图生成助手js版

08/13
00:33
学习

百度sitemap插件导致修改文章提交时间变长

很长一段时间以来,我发布或者更新文章时提交都特别慢,页面提交二十来秒才算提交完成,打开成功后的页面。我为此很纠结,后来发现其实提交几秒后刷新页面就可以看到已经更新了,后面那么长时间是在干嘛呢?

刚才闲得无聊去看百度sitemap插件的收录数量,忽然想起了这货会向百度提交我发表或更改的文章,可能导致提交过程变长,于是去禁用之,再去编辑文章,更新速度马上恢复正常了,反复测试后确定了元凶就是这个插件,果断停用之。

说起来这个插件是向百度提交我博客文章的,可是现在百度我的域名只能看到首页一条结果,太坑了吧,禁用之也不为过。据说新域名有一个月观察期,不知是否如此,反正我个人博客也不稀罕在百度有什么排名,随它便了

百度sitemap插件导致修改文章提交时间变长