浏览器控制台JS 提取章节目录
let topul=document.querySelector('ul.tree-ul.tree-top-ul'); let z1=topul.querySelectorAll('li[data-level="1"]'); txt=[]; i1=0; z1.forEach(x1=>{ i1++; i2=0; //打印一级章节 t1=x1.querySelector('a').innerText; //console.log('1级标题:',t1); //查找二级章节 z2=x1.querySelectorAll('li[data-level="2"]'); z2.forEach(x2=>{ i2++; i3=0; t2=x2.querySelector('a').innerText; //console.log('2级标题:',t2); z3=x2.querySelectorAll('li[data-level="3"]'); z3.forEach(x3=>{ i3++; i4=0; t3=x3.querySelector('a').innerText; //console.log('3级标题:',t3); z4=x3.querySelectorAll('li[data-level="4"]'); if(z4.length!=0){ z4.forEach(x4=>{ i4++; i5=0; t4=x4.querySelector('a').innerText; //console.log('4级标题:',t4); z5=x4.querySelectorAll('li[data-level="5"]'); if(z5.length!=0){ z5.forEach(x5=>{ i5++; t5=x5.querySelector('a').innerText; console.log(i1+t1,i2+t2,i3+t3,i4+t4,i5+t5); //txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i1+'.'+i2+'.'+i3+t3+' '+i1+'.'+i2+'.'+i3+'.'+i4+t4+' '+i1+'.'+i2+'.'+i3+'.'+i4+'.'+i5+t5); txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i3+t3+' '+i4+t4+' '+i5+t5); }) } else{ console.log(i1+t1,i2+t2,i3+t3,i4+t4); //txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i1+'.'+i2+'.'+i3+t3+' '+i1+'.'+i2+'.'+i3+'.'+i4+t4); txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i3+t3+' '+i4+t4); } }) } else {//元素存入数组,结束 console.log(i1+t1,i2+t2,i3+t3); //txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i1+'.'+i2+'.'+i3+t3); txt.push(i1+t1+' '+i1+'.'+i2+t2+' '+i3+t3); } }) }) }) // 创建一个Blob对象,包含要写入的文本 var blob = new Blob([txt.join('\r\n')], { type: 'text/plain' }); // 创建一个链接,指向这个Blob对象 var downloadUrl = URL.createObjectURL(blob); // 创建一个<a>元素,用于下载文件 var link = document.createElement('a'); link.href = downloadUrl; // 设置下载的文件名 link.download = 'data.txt'; // 触发点击事件,开始下载 document.body.appendChild(link); link.click(); // 清理 URL.revokeObjectURL(downloadUrl); document.body.removeChild(link);