使用JS获取网页的title内容_解析SiteMap,布置外链

 RorinL     2022年05月31日 星期二 15:10:03     JavaScript      JavaScript   js   Promise   sitemap   外链    

代码:

function getitle(path) {
	return new Promise((resolve, reject) => {
		var xhr = new XMLHttpRequest();
		xhr.open("get", path);
		xhr.send();
		xhr.onload = function(ms) {
		if (xhr.status == 200) {
			var contenx = xhr.responseText;
			var star = contenx.indexOf('<title>') + 7;
			var end = contenx.indexOf('</title>');
			resolve(contenx.substring(star, end));
		}
		}
	})
}

使用Promise可以在async中使用await处理异步问题;

接下来一个例子:获取多个a标签,并获取该Link的title内容后拼接为新的a标签,然后保存为txt;

function save2text(data, filename) {

 if (!data) {
        console.error('Console.save: No data')
        return;
    }

    if (!filename) filename = 'linka.txt'

    if (typeof data === "object") {
        data = JSON.stringify(data, undefined, 4)
    }

    var blob = new Blob([data], {
            type: 'text/plain;charset=utf-8'
        }),
        e = document.createEvent('MouseEvents'),
        a = document.createElement('a')

 a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl = ['text/plain', a.download, a.href].join(':')
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
    a.dispatchEvent(e)
}

function getitle(path) {
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        xhr.open("get", path);
        xhr.send();
        xhr.onload = function(ms) {
            if (xhr.status == 200) {
                var contenx = xhr.responseText;
                var star = contenx.indexOf('<title>') + 7;
                var end = contenx.indexOf('</title>');
                resolve(contenx.substring(star, end));
            }
        }
    })
}
var tems = '';
var aa = document.querySelectorAll("#content a");
Promise.all(Array.prototype.map.call(aa, async (item, index) => {
    var ss = await getitle(item.href);
    tems += '<a href="' + item.href + '" alt="' + ss + '">' + ss + '</a>\n\r';
})).then(() => {
    console.log('构造成功,正在导出文件...');
    save2text(tems);
});

当然这可以天马行空,或则你可以直接保存title等等; 以上代码是我用来解析站点sitemap的所有Link并保存,方便外链布置


暂无评论

发表回复

您的电子邮箱地址不会被公开。

CAPTCHAis initialing...