用一個js指令碼備份飯否訊息

來源:互聯網
上載者:User

首先進入 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就可以儲存下來了.

這個指令碼沒有考慮效能最佳化問題,可能資料多了到最後會卡.請耐心等待吧..
如果備份結果沒能顯示在頁面中,複製console裡面的輸出內容儲存到html檔案中也可以的.

歡迎各位在評論中就效能問題提供建議..


記錄一下最佳化的幾個點

一個是大字串, 持續對String類型 += 造成效能問題.
後來改用數組, 挨個push字串進去, 最後用join()組成大字串, 效率高更多.

第二個是使用$("html").html(src)中參數為非常大的字串時,
瀏覽器CPU佔用100%並且頁面完全卡死無法恢複.
後來改用document.write(str), 重寫頁面速度大幅提升.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.