Last active
December 8, 2021 20:19
-
-
Save zaaack/ec4b5168e8dddfb882b13f49a70c797d to your computer and use it in GitHub Desktop.
知乎想法/答案备份, copy 到 console 执行即可
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//知乎答案爬取 | |
var $ = document.querySelector.bind(document) | |
var $$ = document.querySelectorAll.bind(document) | |
var zh={ | |
Download:function (content, filename) { | |
// 创建隐藏的可下载链接 | |
var eleLink = document.createElement('a'); | |
eleLink.download = filename; | |
eleLink.style.display = 'none'; | |
// 字符内容转变成blob地址 | |
var blob = new Blob([content]); | |
eleLink.href = URL.createObjectURL(blob); | |
// 触发点击 | |
document.body.appendChild(eleLink); | |
eleLink.click(); | |
// 然后移除 | |
document.body.removeChild(eleLink); | |
}, | |
get_page(){ | |
var page=$(".PaginationButton-next") && Number($(".PaginationButton-next").previousElementSibling.innerText); | |
return page || 1; | |
}, | |
now_page(){ | |
return $(".PaginationButton--current") && Number($(".PaginationButton--current").innerText) || 1 | |
}, | |
get_item(){ | |
var re=[]; | |
$$('.List-item>.AnswerItem').forEach(function(el){ | |
var item={ | |
title: el.querySelector('.ContentItem-title').innerText, | |
text:el.querySelector('.RichContent-inner').innerText, | |
time:el.querySelector(".ContentItem-time").innerText, | |
} | |
item.time = item.time.replace(/发布于\s+/, '') | |
re.push(item); | |
}) | |
return re; | |
}, | |
href(page){ | |
var url=this.get_url()+"?page="+page; | |
location.href=url; | |
}, | |
get_url(){ | |
var url=location.pathname; | |
return "https://www.zhihu.com"+url; | |
}, | |
local(k,v){ | |
if(!v){ | |
var item=localStorage.getItem(k); | |
if(item&&item!="undefined"){ | |
// console.log("item",item); | |
return JSON.parse(item); | |
}else{ | |
return false; | |
} | |
} | |
localStorage.setItem(k,JSON.stringify(v)); | |
} | |
} | |
function sleep(ms) { | |
return new Promise(res=> setTimeout(res, ms)) | |
} | |
zh.local("answer",[]); | |
var main=async ()=>{ | |
if(!location.href.match("answers")){ | |
alert("请打开知乎答案页面"); | |
return; | |
} | |
var total=zh.get_page(); | |
var now=zh.now_page(); | |
var data=(now>1&&zh.local("answer"))?zh.local("answer"):[]; | |
$$('.Button.ContentItem-more').forEach(el=> { | |
el.click() | |
}) | |
await sleep(2000) | |
function save() { | |
let html = data.map(item => `<div> | |
<h3>${item.title}</h3> | |
<p>${item.text}</p> | |
<info>发布于${item.time}</info> | |
</div>`).join('') | |
zh.Download(html,"answer.html"); | |
alert("完成"); | |
} | |
if(data.length==0&&now>1){ | |
save() | |
return; | |
} | |
var tmp=zh.get_item(); | |
if(tmp){ | |
tmp.forEach(v=>{ | |
data.push(v); | |
}) | |
} | |
zh.local("answer",data); | |
console.log('now', now, 'total', total) | |
if(now>=total){ | |
save() | |
return; | |
} | |
now++; | |
$('.PaginationButton-next').click() | |
await sleep(3000) | |
await main() | |
} | |
main(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//想法备份 | |
var $ = document.querySelector.bind(document) | |
var $$ = document.querySelectorAll.bind(document) | |
var zh={ | |
Download:function (content, filename) { | |
// 创建隐藏的可下载链接 | |
var eleLink = document.createElement('a'); | |
eleLink.download = filename; | |
eleLink.style.display = 'none'; | |
// 字符内容转变成blob地址 | |
var blob = new Blob([content]); | |
eleLink.href = URL.createObjectURL(blob); | |
// 触发点击 | |
document.body.appendChild(eleLink); | |
eleLink.click(); | |
// 然后移除 | |
document.body.removeChild(eleLink); | |
}, | |
get_page(){ | |
var page=$(".PaginationButton-next") && Number($(".PaginationButton-next").previousElementSibling.innerText); | |
return page || 1; | |
}, | |
now_page(){ | |
return $(".PaginationButton--current") && Number($(".PaginationButton--current").innerText) || 1 | |
}, | |
get_item(){ | |
var re=[]; | |
$$('.PinItem>.RichContent>.RichContent-inner').forEach(function(el){ | |
var item={ | |
text:el.innerText, | |
time:el.nextElementSibling.querySelector(".ContentItem-time span").getAttribute('data-tooltip'), | |
} | |
item.time = item.time.replace(/发布于\s+/, '') | |
if (!/^\d{4}-/.test(item.time)) { | |
item.time = '2020-' + item.time | |
} | |
re.push(item); | |
}) | |
return re; | |
}, | |
href(page){ | |
var url=this.get_url()+"?page="+page; | |
location.href=url; | |
}, | |
get_url(){ | |
var url=location.pathname; | |
return "https://www.zhihu.com"+url; | |
}, | |
local(k,v){ | |
if(!v){ | |
var item=localStorage.getItem(k); | |
if(item&&item!="undefined"){ | |
// console.log("item",item); | |
return JSON.parse(item); | |
}else{ | |
return false; | |
} | |
} | |
localStorage.setItem(k,JSON.stringify(v)); | |
} | |
} | |
zh.local("xiangfa",[]); | |
var main=()=>{ | |
if(!location.href.match("pin")){ | |
alert("请打开知乎想法页面"); | |
return; | |
} | |
var total=zh.get_page(); | |
var now=zh.now_page(); | |
var data=(now>1&&zh.local("xiangfa"))?zh.local("xiangfa"):[]; | |
function save() { | |
let html = data.map(item => `<div> | |
<h3>${item.time}</h3> | |
<p>${item.text}</p> | |
</div>`).join('') | |
zh.Download(html,"xiangfa.html"); | |
alert("完成"); | |
} | |
if(data.length==0&&now>1){ | |
save() | |
return; | |
} | |
var tmp=zh.get_item(); | |
if(tmp){ | |
tmp.forEach(v=>{ | |
data.push(v); | |
}) | |
} | |
zh.local("xiangfa",data); | |
console.log('now', now, 'total', total) | |
if(now>=total){ | |
save() | |
return; | |
} | |
now++; | |
$('.PaginationButton-next').click() | |
setTimeout(main, 3000) | |
} | |
main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment