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);
}
}
}
}
}