有些朋友在轉發別人部落格的時候會問,部落格怎麼轉發的啊?讓我一段一段的複製嗎?那圖片怎麼辦?隱藏程式碼要一個一個的開啟了複製?
對,很麻煩。費時費力。有的同學會說收藏不就可以了嗎?收藏只是收藏了別人的地址,並沒有收藏人家的全部內容。如果人家刪除原文章,那就等於白收藏了。
我不知道 部落格園有沒有一鍵轉發的功能,反正我是沒找到的。於是,閒來無事,做了個部落格轉發小工具。
其實很簡單,分三步。
一:取得頁面內容
取頁面內容需要用到HtmlAgilityPack.dll 詳細用法可以百度之。
1 /// <summary> 2 /// 抓取方法 3 /// </summary> 4 /// <param name="url">url地址</param> 5 /// <returns></returns> 6 public Result getList(string url) 7 { 8 if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(url.Trim())) 9 return null;//如果url為空 則立刻返回 10 Result result = new Result(); 11 HtmlWeb htmlWeb = new HtmlWeb(); 12 try 13 { 14 HtmlAgilityPack.HtmlDocument htmlDoc = htmlWeb.Load(url); 15 result.url = url; 16 result.content = htmlDoc.DocumentNode.SelectSingleNode("//div[@id='cnblogs_post_body']").InnerHtml;//這裡是去div id為cnblogs_post_body的全部內容 也就是我們釋出的部落格全部內容 17 result.title = htmlDoc.DocumentNode.SelectSingleNode("//a[@id='cb_post_title_url']").InnerText; //取標題 18 } 19 catch (Exception) { return null; } 20 return result; 21 }
二:複製頁面內容
Clipboard.SetText(txt_content.Text);//把內容複製到貼上板
三:貼上內容釋出
這裡就沒有我的事了。你自己去後臺釋出就ok了。
不過釋出的時候要注意了。貼上的時候一定要切換到html模式。
貼圖了
這裡貼出全部程式碼,因為程式碼量非常少,就放一個檔案了。
1 using HtmlAgilityPack; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace 部落格轉發 11 { 12 public partial class Form1 : Form 13 { 14 public Form1() 15 { 16 InitializeComponent(); 17 } 18 19 private void button1_Click(object sender, EventArgs e) 20 { 21 //string url = @"http://www.cnblogs.com/zhaopei/p/4174811.html"; 22 Result re = getList(txt_url.Text); 23 if (re == null) 24 { 25 MessageBox.Show("請輸入正確部落格園的部落格地址~"); return; 26 } 27 string str = @"<a href='" + re.url + "'>【轉】" + re.title + "</a><br/>"; 28 txt_content.Text = str + re.content; 29 txt_title.Text = "【轉】" + re.title; 30 Clipboard.SetText(txt_content.Text);//把內容複製到貼上板 31 MessageBox.Show("已經成功複製到貼上板~"); 32 } 33 34 /// <summary> 35 /// 抓取方法 36 /// </summary> 37 /// <param name="url">url地址</param> 38 /// <returns></returns> 39 public Result getList(string url) 40 { 41 if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(url.Trim())) 42 return null;//如果url為空 則立刻返回 43 Result result = new Result(); 44 HtmlWeb htmlWeb = new HtmlWeb(); 45 try 46 { 47 HtmlAgilityPack.HtmlDocument htmlDoc = htmlWeb.Load(url); 48 result.url = url; 49 result.content = htmlDoc.DocumentNode.SelectSingleNode("//div[@id='cnblogs_post_body']").InnerHtml;//這裡是去div id為cnblogs_post_body的全部內容 也就是我們釋出的部落格全部內容 50 result.title = htmlDoc.DocumentNode.SelectSingleNode("//a[@id='cb_post_title_url']").InnerText; //取標題 51 } 52 catch (Exception) { return null; } 53 return result; 54 } 55 } 56 57 public class Result 58 { 59 /// <summary> 60 /// 連結 61 /// </summary> 62 public string url { get; set; } 63 /// <summary> 64 /// 標題 65 /// </summary> 66 public string title { get; set; } 67 /// <summary> 68 /// 正文內容 69 /// </summary> 70 public string content { get; set; } 71 } 72 }
如果大家有興趣可以在此基礎上進行自己的擴充套件和修改。