HtmlAgilityPack是一個基於.Net的、第三方免費開源的微型類庫,主要用於在伺服器端解析html文檔(在B/S結構的程式中客戶端可以用Javascript、jquery解析html) ...
今天剛開始做畢設....好吧,的確有點晚。我的畢設設計需要爬取豆瓣的電影推薦,於是就需要解析爬取下來的html,之前用Python玩過解析,但目前我使用的是C#,我覺得C#不比python差,有微軟大大在,這個不需要擔心,主要還是生態問題。查了下資料,發現Html Agility Pack是比較好的,當然還有其他的,我就不說了,主要使用它做的。
官網地址(可以自己去下載dll):
http://html-agility-pack.net/select-nodes
代碼設計:
static void complete(object o, AsyncCompletedEventArgs e) { // 開始解析html var doc = new HtmlDocument(); doc.Load( "E:\程式文件\C#程式代碼\Validate\ConsoleApplication1\movie.txt", Encoding.UTF8); List<string> movie = new List<string>(); // HtmlNodeCollection nodeCollection = doc.DocumentNode.SelectNodes("//ul/li[ class=\"title\"]"); foreach (HtmlNode n in nodeCollection) { Console.WriteLine(n.InnerHtml.Trim()); movie.Add(n.InnerText.Trim()); } //獲取豆瓣最受歡迎影評 HtmlNodeCollection nodeCollection1 = doc.DocumentNode.SelectNodes("//div[ class=\"review-bd\"]/h3"); foreach (HtmlNode n in nodeCollection1) { Console.WriteLine(n.InnerHtml.Trim()); movie.Add(n.InnerText.Trim()); } foreach(var m in movie) { Console.WriteLine(m); } File.Delete( "E:\程式文件\C#程式代碼\Validate\ConsoleApplication1\movie.txt"); } static void Main(string[] args) { Console.BufferHeight = 10000; Console.BufferWidth = 10000; string moviePath = "E:\程式文件\C#程式代碼\Validate\ConsoleApplication1\movie.txt"; WebClient wc = new WebClient(); wc.UseDefaultCredentials = true; wc.DownloadFileAsync(new Uri("https://movie.douban.com/"), moviePath); wc.DownloadFileCompleted += new AsyncCompletedEventHandler(complete); Console.Read(); }
對於WebClient文檔,請看https://msdn.microsoft.com/zh-cn/library/system.net.webclient(v=vs.110).aspx
不得不說,微軟官網的系列文檔真是良心!以前也是聽人說過,微軟的解決方案以及文檔很全,但是一直查資料都是直接百度,現在換了一種,直接上微軟官網查....真是良心!而且例子是比較經典的!