Chia sẻ

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

Chúc các bạn thành công!


Chia sẻ
Xem thêm  [WPF] Hướng dẫn tạo ContextMenu trong wpf

By admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *