作者:郝喜路 個人主頁: http://www.cnicode.com 博客地址:http://haoxilu.cnblogs.com 時間:2014年6月26日 19:25:02
剛剛在博客園 看到一篇博文《使用HttpWebRequest和HtmlAgilityPack抓取網頁(拒絕亂碼,拒絕正則表達式)》 ,感覺不錯,作者寫的也挺好的,然後在看了園子裡的朋友的評論後,我知道了有一個更牛x的工具——Jumony 。這個工具用起來可謂稱之為簡單、高效。 特此記錄和分享,Jumony 的使用方法。
Jumony是開源項目,目前源代碼存放咋GitHub ,源碼地址: https://github.com/Ivony/Jumony 。我測試使用的是Visual Studio 2012 ,測試網頁為博客園。
下面介紹使用方法:
一、在新建項目後,需要將Jumony添加到項目中,你可以下載源碼使用,也可以在NugGet 中 搜索 Jumony Core 將其添加到項目中並且後自動添加所需的引用。
二、添加引用之後,即可寫項目代碼。(此處代碼為獲取 博客園首頁文章內容)
1 public string Html = string.Empty;//為將拼接好html字符串返回給前台代碼 2 protected void Page_Load(object sender, EventArgs e) 3 {
5 var htmlSource = new JumonyParser().LoadDocument("http://www.cnblogs.com").Find(".post_item a.titlelnk"); 6 int count = 0; 7 foreach (var htmlElement in htmlSource) 8 { 9 count ++; 10 Html += string.Format(" <li>{2}、 <a href=\"About.aspx?Url={0}\" target=\"_blank\">{1}</a></li>", htmlElement.Attribute("href").Value(), htmlElement.InnerText(),count); 11 } 12 }
效果圖:
三、下面就是要在點擊上圖從博客園抓取的文章標題之後,在顯示博客全文(並非在打開博客園的文章)
代碼:
1 string html = Request["Url"]; 2 var htmlSource = 3 new JumonyParser().LoadDocument(html); 4 HtmlText = htmlSource.Find(".postTitle2").FirstOrDefault().InnerText(); 5 6 Html = htmlSource.Find("#cnblogs_post_body").FirstOrDefault().InnerHtml();到此,網頁抓取寫完了,沒有什麼深奧的道理,只是把他的使用方法簡單的把代碼貼出來了,還沒有研究其源碼,有時間需要深究一下。 Jumony更多的使用方式請參見博客 http://www.cnblogs.com/Ivony/p/3447536.html 本次演示Jumony快速開發的代碼如下(在百度雲盤,請自行下載:): http://pan.baidu.com/s/1COuCI 謝謝!
效果圖: