C# (.NET) में HTML पार्सिंग: HtmlAgilityPack और AngleSharp लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में HTML पार्सिंग: HtmlAgilityPack और AngleSharp लाइब्रेरीज़ का अवलोकन



HTML पार्सिंग वेब-स्क्रैपर, कंटेंट एनालाइज़र या ऑटोमेटेड टेस्ट विकसित करते समय मुख्य कार्यों में से एक है। .NET इकोसिस्टम में कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं जो HTML दस्तावेज़ों से डेटा निकालने, DOM-ट्री में हेरफेर करने और जटिल क्वेरी करने की अनुमति देती हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़: HtmlAgilityPack और AngleSharp पर चर्चा करेंगे। आप उनकी विशेषताओं, लाभों के बारे में जानेंगे और C# में तैयार कोड उदाहरण प्राप्त करेंगे।



HtmlAgilityPack: क्लासिक दृष्टिकोण



HtmlAgilityPack (HAP) .NET में HTML पार्सिंग के लिए सबसे पुरानी और सबसे व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है। यह DOM-ट्री में नेविगेशन के लिए एक सहज API प्रदान करती है, XPath और LINQ क्वेरी का समर्थन करती है। मुख्य क्षमताएँ:



  • स्ट्रिंग, फ़ाइल या URL से HTML लोड करना।
  • तत्वों की सटीक खोज के लिए XPath 1.0 का समर्थन।
  • विशेषताओं, टेक्स्ट और नेस्टेड नोड्स के साथ काम करना।
  • गलत HTML का स्वचालित सुधार (जैसे, बंद न किए गए टैग)।


स्थापना

NuGet के माध्यम से लाइब्रेरी स्थापित करें:

Install-Package HtmlAgilityPack

या .NET CLI के माध्यम से:

dotnet add package HtmlAgilityPack


उदाहरण: समाचार शीर्षक निकालना

मान लीजिए, हमें एक समाचार साइट से शीर्षक पार्स करने हैं। HAP और XPath का उपयोग करके इसे कैसे करें:



using HtmlAgilityPack;using System;using System.Linq;

class Program{ static void Main() { // HTML दस्तावेज़ लोड करें var web = new HtmlWeb(); var doc = web.Load("https://example-news.com"); // "news-title" क्लास वाले सभी h2 शीर्षक चुनें var titles = doc.DocumentNode .SelectNodes("//h2[@class='news-title']"); if (titles != null) { foreach (var title in titles) { Console.WriteLine(title.InnerText.Trim()); } } }}


इस उदाहरण में, हम निर्दिष्ट क्लास वाले सभी <h2> तत्वों को खोजने के लिए XPath एक्सप्रेशन //h2[@class='news-title'] का उपयोग करते हैं। SelectNodes मेथड नोड्स का एक संग्रह लौटाता है, और InnerText HTML टैग के बिना टेक्स्ट निकालता है।



विशेषताओं के साथ काम करना

अक्सर किसी विशेषता का मान प्राप्त करना आवश्यक होता है, जैसे <a> टैग से लिंक:



var links = doc.DocumentNode.SelectNodes("//a[@href]");if (links != null){    foreach (var link in links)    {        string href = link.GetAttributeValue("href", "");        Console.WriteLine(href);    }}


AngleSharp: CSS-सेलेक्टर के साथ आधुनिक पार्सर



AngleSharp एक अधिक आधुनिक लाइब्रेरी है जो न केवल XPath बल्कि CSS-सेलेक्टर का भी समर्थन करती है, जो इसे वेब तकनीकों से परिचित डेवलपर्स के लिए सुविधाजनक बनाती है। यह W3C मानकों का पूरी तरह से पालन करती है और डायनामिक कंटेंट के साथ काम कर सकती है।



  • CSS-सेलेक्टर का समर्थन (जैसे jQuery में)।
  • HTML, XML, SVG और MathML के साथ काम करना।
  • JavaScript निष्पादन की संभावना (एक्सटेंशन के माध्यम से)।
  • दस्तावेज़ों की एसिंक्रोनस लोडिंग।


स्थापना

dotnet add package AngleSharp


उदाहरण: CSS-सेलेक्टर का उपयोग करके डेटा निकालना

पिछले उदाहरण को दोहराएँ, लेकिन अब AngleSharp और CSS-सेलेक्टर के साथ:



using AngleSharp;using AngleSharp.Html.Parser;using System;using System.Linq;using System.Threading.Tasks;

class Program{ static async Task Main() { // पार्सर बनाएँ var parser = new HtmlParser(); // HTML लोड करें (स्ट्रिंग या URL से) var document = await parser.ParseDocumentAsync( a

अनुशंसाएँ