C# (.NET) में HTML पार्सिंग: लाइब्रेरीज़ और कोड उदाहरण

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

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

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

C# (.NET) में HTML पार्सिंग: सरल से जटिल तक

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

1. HtmlAgilityPack — क्लासिक विकल्प

HtmlAgilityPack (HAP) C# में HTML पार्सिंग के लिए सबसे आम लाइब्रेरी है। यह XPath और LINQ को सपोर्ट करती है, जो इसे पदानुक्रमित संरचनाओं के साथ काम करने के लिए आदर्श बनाता है। HAP गलत HTML मार्कअप को स्वचालित रूप से ठीक करता है, जो "कच्चे" पेजों को पार्स करते समय विशेष रूप से उपयोगी है।

NuGet के माध्यम से इंस्टॉलेशन:

Install-Package HtmlAgilityPack

उदाहरण: पेज से सभी लिंक निकालना

using HtmlAgilityPack;

string url = "https://example.com";
var web = new HtmlWeb();
var doc = web.Load(url);

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

उदाहरण: टेबल से डेटा निकालना

var tableRows = doc.DocumentNode.SelectNodes("//table[@id='data-table']//tr");
foreach (var row in tableRows)
{
    var cells = row.SelectNodes("td");
    if (cells != null)
    {
        var rowData = cells.Select(c => c.InnerText.Trim()).ToList();
        Console.WriteLine(string.Join(" | ", rowData));
    }
}

2. AngleSharp — आधुनिक विकल्प

AngleSharp एक अधिक आधुनिक लाइब्रेरी है, जो पूरी तरह से C# में लिखी गई है और W3C स्पेसिफिकेशन का पालन करती है। यह CSS सेलेक्टर को सपोर्ट करती है, जो jQuery जैसे सिंटैक्स के आदी लोगों के लिए सुविधाजनक है। AngleSharp DOM, SVG और MathML के साथ भी काम कर सकती है।

NuGet के माध्यम से इंस्टॉलेशन:

Install-Package AngleSharp

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

using AngleSharp;
using AngleSharp.Dom;

var config = Configuration.Default.WithDefaultLoader();
var context = BrowsingContext.New(config);
var document = await context.OpenAsync("https://example.com");

// "product" क्लास वाले सभी एलिमेंट प्राप्त करें
var products = document.QuerySelectorAll(".product");
foreach (var product in products)
{
    var name = product.QuerySelector(".product-name")?.TextContent.Trim();
    var price = product.QuerySelector(".product-price")?.TextContent.Trim();
    Console.WriteLine($"{name}: {price}");
}

उदाहरण: स्क्रिप्ट से JSON निकालना

var scripts = document.QuerySelectorAll("script[type='application/ld+json']");
foreach (var script in scripts)
{
    var json = script.TextContent;
    // फिर System.Text.Json के माध्यम से JSON को डिसीरियलाइज़ करें
    Console.WriteLine(json);
}

3. CsQuery — jQuery जैसा सिंटैक्स

CsQuery C# के लिए jQuery का एक पोर्ट है, जो DOM के साथ काम करने के लिए परिचित API प्रदान करता है। यह विशेष रूप से उन लोगों के लिए सुविधाजनक है जो JavaScript से C# पर माइग्रेट कर रहे हैं। हालांकि, ध्यान दें कि यह प्रोजेक्ट AngleSharp की तुलना में कम अपडेट होता है और .NET के नवीनतम संस्करणों को सपोर्ट नहीं कर सकता है।

NuGet के माध्यम से इंस्टॉलेशन:

Install-Package CsQuery

उदाहरण: एलिमेंट से टेक्स्ट निकालना

using CsQuery;

string html = "<div class='content'><p>नमस्ते, दुनिया!</p></div>";
var dom = CQ.Create(html);

var text = dom[".content p"].Text();
Console.WriteLine(text); // आउटपुट: नमस्ते, दुनिया!

4. व्यावहारिक सुझाव

जब आप C# में HTML पार्सिंग कर रहे हों, तो निम्नलिखित बातों का ध्यान रखें:

  • हमेशा try-catch ब्लॉक का उपयोग करें, क्योंकि वेब पेज अप्रत्याशित हो सकते हैं।
  • बड़े पेजों के लिए async/await का उपयोग करें ताकि एप्लिकेशन रिस्पॉन्सिव रहे।
  • डेटा निकालने के बाद, उसे JSON या CSV फॉर्मेट में सेव करें।
  • वेबसाइट के robots.txt और सेवा की शर्तों का सम्मान करें।

इन लाइब्रेरीज़ के साथ, आप C# (.NET) में कुशलतापूर्वक HTML पार्स कर सकते हैं और अपने प्रोजेक्ट्स के लिए मूल्यवान डेटा निकाल सकते हैं।

अनुशंसाएँ