使用CHM文檔 采集隨筆(續)


背景

  上篇說到我們可以將自己的博客內隨筆/文章/日記備份得到的xml 轉換成CHM文檔,如果我們希望將某個大牛的博客隨筆全部導出,這個能不能實現呢?寫在這里算是廢話了,既然有了這篇博客,那么這個問題,一定是可以解決的。

資源下載

  可執行程序

  源代碼

  示例文檔截圖(路過秋天):

      

開發思路

  1.根據博客園ID得到隨筆類別,如地址為 http://www.cnblogs.com/cyq1162/,則博客園ID為cyq1162,請求頁面http://www.cnblogs.com/cyq1162/mvc/blog/sidecolumn.aspx。請求結果如下:

     

  通過正則匹配到該頁面的鏈接,以某個鏈接為例,http://www.cnblogs.com/cyq1162/category/268820.html,其中包含cyq1162/category,基於這樣的規則,我們可以得到所有的隨筆分類鏈接。

  2.得到隨筆分類鏈接之后,則請求該鏈接的內容,得到該隨筆下的所有文章鏈接。文章鏈接,以某個鏈接為例,http://www.cnblogs.com/cyq1162/archive/2013/03/17/2964746.html,其中包含cyq1162/archive,基於這樣的規則,我們可以得到所有的文章鏈接。

  3.得到文章的鏈接,這樣就能得到文章正文。我們要獲取的有文章標題、文章正文、發布時間。這里沒有去嘗試獲取文章作者,不好獲取。前面指的需要獲取的3個內容,在某個明確id的節點里。這里使用了HtmlAgilityPack進行HTML解析,感覺非常方便,可以直接根據ID得到元素,然后獲取它的內容。解析代碼如下:

                            //下載隨筆內容 替換后保存本地
                            var contentCode = GetContent(articleUrl);//獲取隨筆內容
                            HtmlDocument htmlCode = new HtmlDocument();
                            htmlCode.LoadHtml(contentCode);
                            var titleNode = htmlCode.GetElementbyId("cb_post_title_url");
                            var postBody = htmlCode.GetElementbyId("cnblogs_post_body");
                            var postDate = htmlCode.GetElementbyId("post-date");
                            //var topics = htmlCode.GetElementbyId("topics");
                            var localHtml = template
                       .Replace("{channelTitle}", titleNode.InnerText)//博文標題
                       .Replace("{preContent}", DownImage(postBody.InnerHtml))//博文內容
                       .Replace("{channelHref}", titleNode.GetAttributeValue("href", "#"))//博文地址
                       .Replace("{channelLink}", userId + ".cnblogs.com")//博客地址
                       .Replace("{channelAuthor}", userId);//博文作者

 

  4.下一步則是編譯CHM了,這里就不重復介紹了。

 

  其中參考啊漢的博文 《一鍵構造你的博客目錄》 構造了隨筆目錄。

  代碼邏輯就這么多,比較簡單,希望大伙喜歡。如果設置首頁不顯示隨筆分類的話,是無法采集的,若是博客引用了自定義樣式,需要手動添加該樣式在。有其他的問題,可以向我反饋,也可以自己下載代碼調試看看。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM