c# - एचटीएमएल एजिलिटी पैक का उपयोग कैसे करें




html html-agility-pack (4)

मैं एचटीएमएल एजिलिटी पैक का उपयोग कैसे करूं?

मेरा एक्सएचटीएमएल दस्तावेज़ पूरी तरह मान्य नहीं है। यही कारण है कि मैं इसका इस्तेमाल करना चाहता था। मैं अपनी परियोजना में इसका उपयोग कैसे करूं? मेरी परियोजना सी # में है।


HtmlAgilityPack XPath सिंटैक्स का उपयोग करता है, और हालांकि कई लोग तर्क देते हैं कि यह खराब दस्तावेज है, मुझे इस XPath दस्तावेज़ से सहायता के साथ इसका उपयोग करने में कोई परेशानी नहीं थी: https://www.w3schools.com/xml/xpath_syntax.asp

पार्स करने के लिए

<h2>
  <a href="">Jack</a>
</h2>
<ul>
  <li class="tel">
    <a href="">81 75 53 60</a>
  </li>
</ul>
<h2>
  <a href="">Roy</a>
</h2>
<ul>
  <li class="tel">
    <a href="">44 52 16 87</a>
  </li>
</ul>

इसे मैने किया है:

string url = "http://website.com";
var Webget = new HtmlWeb();
var doc = Webget.Load(url);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h2//a"))
{
  names.Add(node.ChildNodes[0].InnerHtml);
}
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//li[@class='tel']//a"))
{
  phones.Add(node.ChildNodes[0].InnerHtml);
}

प्रारंभ करना - एचटीएमएल एजिलिटी पैक

// From File
var doc = new HtmlDocument();
doc.Load(filePath);

// From String
var doc = new HtmlDocument();
doc.LoadHtml(html);

// From Web
var url = "http://html-agility-pack.net/";
var web = new HtmlWeb();
var doc = web.Load(url);

मुझे नहीं पता कि यह आपके लिए कोई मदद करेगा, लेकिन मैंने कुछ लेख लिखे हैं जो मूल बातें पेश करते हैं।

अगला लेख 95% पूर्ण है, मुझे बस लिखे गए कोड के अंतिम कुछ हिस्सों के स्पष्टीकरण लिखना है। यदि आप रुचि रखते हैं तो मैं इसे प्रकाशित करने के लिए यहां पोस्ट करने की याद रखूंगा।


सबसे पहले, अपनी परियोजना में HTMLAgilityPack nuget पैकेज स्थापित करें।

फिर, एक उदाहरण के रूप में:

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

// There are various options, set as needed
htmlDoc.OptionFixNestedTags=true;

// filePath is a path to a file containing the html
htmlDoc.Load(filePath);

// Use:  htmlDoc.LoadHtml(xmlString);  to load from a string (was htmlDoc.LoadXML(xmlString)

// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
    // Handle any parse errors as required

}
else
{

    if (htmlDoc.DocumentNode != null)
    {
        HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

        if (bodyNode != null)
        {
            // Do something with bodyNode
        }
    }
}

(एनबी: यह कोड केवल एक उदाहरण है और जरूरी नहीं कि सबसे अच्छा / केवल दृष्टिकोण। अपने आवेदन में अंधेरे से इसका उपयोग न करें।)

HtmlDocument.Load() विधि भी एक स्ट्रीम स्वीकार करती है जो .NET ढांचे में अन्य स्ट्रीम उन्मुख वर्गों के साथ एकीकृत करने में बहुत उपयोगी है। जबकि HtmlEntity.DeEntitize() HTML इकाइयों को सही तरीके से संसाधित करने के लिए एक और उपयोगी विधि है। (धन्यवाद मैथ्यू)

HtmlDocument और HtmlNode वे कक्षाएं हैं जिनका आप अधिकतर उपयोग करेंगे। एक एक्सएमएल पार्सर की तरह, यह selectSingleNode और selectNodes विधियों को प्रदान करता है जो XPath अभिव्यक्ति स्वीकार करते हैं।

HtmlDocument.Option?????? ध्यान HtmlDocument.Option?????? बूलियन गुण। ये नियंत्रण कैसे Load और LoadXML विधियां आपके एचटीएमएल / एक्सएचटीएमएल को संसाधित करेंगे।

HtmlAgilityPack.chm नामक एक संकलित सहायता फ़ाइल भी है जिसमें प्रत्येक ऑब्जेक्ट के लिए एक पूर्ण संदर्भ है। यह आमतौर पर समाधान के मूल फ़ोल्डर में होता है।





html-agility-pack