Nội dung
Giới thiệu
Trong bài hôm nay, csharpcanban.com sẽ giới thiệu tới các bạn thêm 2 phương pháp để quét trang web bằng thư viện HtmlAgilityPack với C# hoặc WPF.
Chuẩn bị
Bước 1. Tạo một ứng dụng C# mới
Bước 2. Bổ sung thêm thư viện HtmlAgilityPack từ nuget
Bước 3. Sử dụng 1 trong 2 phương pháp sau để quét
Phương pháp 1
using HtmlAgilityPack; using System; using System.Linq; namespace Vainolo.WebScraping { class Method1 { public static void Scrape() { var page = new HtmlDocument(); page.Load("https://vainolo.z14.web.core.windows.net/WebScraping.html"); var techniquesTitle = page.GetElementbyId("Techniques"); var currNode = techniquesTitle.ParentNode.NextSibling; while(currNode.Name != "h2") { if(currNode.GetClasses().Contains("mw-headline")) { var headline = currNode.InnerText; Console.WriteLine(headline); } if(currNode.HasChildNodes) { currNode = currNode.FirstChild; } else if(currNode == currNode.ParentNode.LastChild) { while(currNode.ParentNode.NextSibling == null) { currNode = currNode.ParentNode; } currNode = currNode.ParentNode.NextSibling; } else { currNode = currNode.NextSibling; } } } } }
Phương pháp 2
using HtmlAgilityPack; using System; using System.Linq; namespace Vainolo.WebScraping { class Method2 { public static void Scrape() { var page = new HtmlDocument(); page.Load("https://vainolo.z14.web.core.windows.net/WebScraping.html"); var nodes = page.DocumentNode.Descendants().SkipWhile(e => e.Id != "Techniques").Skip(1).TakeWhile(e => e.Name != "h2"); foreach (var currNode in nodes) { if(currNode.GetClasses().Contains("mw-headline")) { var headline = currNode.InnerText; Console.WriteLine(headline); } } } } }