随笔 - 22  文章 - 467  trackbacks - 0
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(25)

随笔分类(74)

文章分类(1)

收藏夹(277)

在线工具

在线资料

最新随笔

搜索

  •  

积分与排名

  • 积分 - 216721
  • 排名 - 260

最新评论

阅读排行榜

评论排行榜

首先进入 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/AjaxWeb

FeedBack:
# re: 用一个js脚本备份饭否消息[未登录] 2013-02-04 21:50 胡杨
效果非常好,3000+毫无压力,感谢作者:)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: