jkluio668
1/11/2018 - 3:57 AM

js_spider and copy

[1]下面的2个文件的步骤和说明:
①文件1,先运行一遍,相当于注入外部js文件的作用
②在修改文件2中的cssselector和输出格式后,运行文件2。获得有结果的页面最下方的textarea。
③点击textarea旁边的copy,完成最终的复制。
(注:document.execCommand('copy'),不支持用js执行,(会返回"fail"),但支持点击的事件,(会返回"success")。)
[2]
文件1:
function selText() {
  console.clear();
  textarea_id = 'copy3'document.getElementById(textarea_id).select();
  try {
    if (document.execCommand('cut', false, null)) {
      //    if(document.execCommand('copy', false, null)){
      console.log('success') //success info
    } else {
      console.log('fail') //fail info
    }
  } catch(err) {
    console.log(err)
    //fail info
  }
}
selText();

文件2:
// have checkbox
var e1 = document.querySelectorAll('div.songList ol li') var e = []
for (var i = 0; i < e1.length; i++) {
  if (e1[i].querySelector('input').checked) {
    e.push(e1[i].querySelector('a'))
  }
}

// common
var str1 = ''
var textarea_id = 'copy3'
var input_id = 'copy4'

// code_b
var e = document.querySelectorAll('div#maincontent div h2')
for (var i = 0; i < e.length; i++) {
  // for (var i=0;i<55;i++){
  // document.write(e[i].href+'\t'+e[i].innerText+'<br>');
  // document.write(e[i].innerText+'\t'+e[i].href+'<br>')
  // document.write(e[i].innerText+'<br>');
  // console.log(e[i].innerText)
  // console.log(e[i].innerText+'\t'+e[i].href)
  console.clear();
  str1 = str1 + e[i].innerText + '\t' + e[i].href + '\n';
  // str1 = str1 + e[i].innerText+'\n';
  // copyTextToClipboard(e[i].innerText)
}
// code_e

function again1() {
  var body = document.getElementsByTagName('body')[0];

  var textarea1 = document.getElementById(textarea_id);
   var button1 = document.getElementById(input_id);
  if (textarea1) {
    body.removeChild(textarea1)
  }
  if (button1) {
    body.removeChild(button1)
  }

  var textarea1 = document.createElement("textarea");
  // textarea1.innerHTML = text; 
  textarea1.setAttribute('id', textarea_id);
  textarea1.setAttribute('cols', '90');
  textarea1.setAttribute('rows', '10');
  //
  var button1 = document.createElement("input");
  button1.setAttribute('id', input_id);
  button1.setAttribute('type', 'button');
  button1.setAttribute('onclick', 'selText()');
  button1.setAttribute('value', 'Copy');
  //
  body.appendChild(textarea1);
  body.appendChild(button1);
}
again1();

var textarea1 = document.getElementById(textarea_id); 
textarea1.innerHTML = str1; //此处不能用innerText,否则\n会被转换为<br>
console.clear();
console.log(e.length);

其他文件:
// String.prototype.srepeat = function(num=1){
//     return new Array(num+1).join(this);
// }

var e = document.querySelectorAll('div#maincontent div h2')
var tab_num = 1

for (var i = 0; i < e.length; i++) {
  // for (var i=0;i<55;i++){
  var tab_num = 1
  console.clear();
  str1 = str1 + e[i].innerText + '\t'.repeat(tab_num) + e[i].href + '\n';
  // str1 = str1 + e[i].innerText+'\n';
  // str1 = str1 + e[i].src+'\n';
  // console.log(e[i].innerText)
  // console.log(e[i].innerText+'\t'+e[i].href)
}

function spider2(){
var e1 = document.querySelectorAll("ul div [depth='1']")
for (var i1 of e1){
    var e2 = [];
    var tab_num = 1
    str1 = str1 + i1.querySelectorAll('a')[0]['href'] + '\t'.repeat(tab_num) + i1.querySelectorAll('a')[0].innerText + '\n'
    var e2 = i1.querySelectorAll("ul div [depth='2']")
    for (var i2 of e2){
        var e3 = [];
        str1 = str1 + i2.querySelectorAll('a')[0]['href']+ '\t'.repeat(tab_num + 1) + i2.querySelectorAll('a')[0].innerText + '\n'
        var e3 = i2.querySelectorAll("ul div [depth='3']")
        for (var i3 of e3){
        str1 = str1 + i3.querySelectorAll('a')[0]['href']+'\t'.srepeat(tab_num + 2) + i3.querySelectorAll('a')[0].innerText + '\n'
        }
    }
}
}

function again1(){
    var textarea_id = 'copy3'
    var input_id = 'copy4'
    var body = document.getElementsByTagName('body')[0];
 
    var textarea1 =document.getElementById(textarea_id)
    var button1 = document.getElementById(input_id)
    if (textarea1)
        {
        body.removeChild(textarea1)
        }
    if (button1)
        {
        body.removeChild(button1)
        }
    
    var textarea1 = document.createElement("textarea");     
    // textarea1.innerHTML = text; 
    textarea1.setAttribute('id',textarea_id);
    textarea1.setAttribute('cols','90');
    textarea1.setAttribute('rows','10');
    //
    var button1 = document.createElement("input");
    button1.setAttribute('id',input_id);
    button1.setAttribute('type','button');
    button1.setAttribute('onclick','selText()');
    button1.setAttribute('value','Copy');
    //
    body.insertBefore(button1,body.childNodes[0]); 
    body.insertBefore(textarea1,body.childNodes[0]); 
//     body.appendChild(textarea1); 
//     body.appendChild(button1); 
}

again1();
 
var str1 = '';
spider1();
var textarea1 = document.getElementById(textarea_id);
textarea1.innerHTML = str1;