首先进入
http://m.fanfou.com 登录好自己的帐号.
然后在chrome下按F12,切换到最后一栏"Console".
在里面粘贴下面代码后回车:
var body = document.getElementsByTagName('body')[0];
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
body.appendChild(s);
然后再修改下面一段代码,将要备份的那一项前面的 " // " 去掉
//收藏
//var next_url = "/favorites"; var type="fav";
//@我的
//var next_url = "/mentions"; var type="at";
//收到的私信
//var next_url = "/privatemsg"; var type="pri";
//发出的私信
//var next_url = "/privatemsg/sent"; var type="pri";
//个人消息
//var next_url = "/链接中的用户名"; var type="usr";
var count = 0;
var src = [];
function save_log(){
if (typeof(next_url)!="undefined" && next_url!=null) {
$.get("http://m.fanfou.com" + next_url, function(data){
$("html").html(data);
if (type == "fav") {
var p1 = $("h2").next("p").next("p").next("p");
} else {
var p1 = $("h2").next("p");
}
while (p1.html() != null && p1.next("p").html() != null) {
src.push("<p>" + ++count + " " + p1.html() + "</p>\n");
console.log("<p>" + count + " " + p1.html() + "</p>\n");
p1 = p1.next("p");
}
next_url = p1.find("a:contains('下页')").attr("href");
save_log();
});
} else {
var str = src.join("");
document.write(str);
console.log("备份完成.按ctrl+s保存本页面.");
alert("备份完成.按ctrl+s保存本页面.");
}
}
console.log("<link rel=\"stylesheet\" href=\"http://static.fanfou.com/css/m.css\" type=\"text/css\" media=\"screen\" charset=\"utf-8\">");
src.push("<style>body{font-family:Helvetica,Arial,sans-serif;word-break:break-all;word-wrap:break-word;text-overflow:ellipsis;}body,ul,ol,form{margin:0;padding:0;}ul,ol{list-style:none;}h1,h2,h3,div,li,p{margin:0;padding:2px 2px;font-size:medium;}h2,li,#nav,.b{border-bottom:1px solid #ccc;}h1{background:#0cf;}h2{background:#ccf5ff;}a{color:#06c;text-decoration:none;}a:hover,a:focus{background:#06c;color:#fff;}table a img{padding:2px;border:1px solid #ddd;background:#fff;}.p{font-weight:bold;}.search strong{font-weight:normal;color:red;}.n{border:1px solid #ffed00;background:#fffcaa;}.t,.a,#ft{color:#999;font-size:small;}#nav{border-top:1px solid #59a1b3;}.i{width:95%;padding:2px 0;margin:auto;}</style>");
save_log(); 将取消一句注释的上面那段代码也在"Console" 里面粘贴,然后回车.
然后就等结果吧.全部抓完之后会将结果显示到网页中. 按Ctrl+S就可以保存下来了.
这个脚本考虑了性能优化问题,但是不排除数据超多到了最后会卡的情况.请耐心等待吧..
欢迎各位在评论中就性能问题提供建议..
记录一下优化的几个点
一个是大字符串, 持续对String类型 += 造成性能问题.
后来改用数组, 挨个push字符串进去, 最后用join()组成大字符串, 效率高更多.
第二个是使用$("html").html(src)中参数为非常大的字符串时,
浏览器CPU占用100%并且页面完全卡死无法恢复.
后来改用document.write(str), 重写页面速度大幅提升.
posted on 2012-08-22 04:50
ApolloDeng 阅读(2423)
评论(1) 编辑 收藏 所属分类:
分享 、
发布 、
Js/JQuery/Ajax 、
Web