HtmlAgiltyPack解析HTML並從span標記和類名中取值

asp.net asp.net-mvc c# html html-agility-pack

我有一個HTML,我通過我的webrequest客戶端下載。在整個HTML中,我只想解析HTML的這一部分:

<span class="sku">
<span class="fb">SKU                            :</span>118880101
</span>

我正在使用HTML agilty pack來檢索此值:118880101

我寫了這樣的東西:

 HtmlDocument htmlDoc = new HtmlDocument();
 htmlDoc.LoadHtml(html);
 return htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']").ElementAt(0).InnerText;

這會從HTML返回這個值:

SKU                            :118880101

字面意思是這樣,空格包括......如何使用HTML Agilty包修復此邏輯,以便我只能取出這個118880101值?

有人可以幫我嗎?

編輯:像這樣的正則表達式會做的事情:

Substring(skuRaw.LastIndexOf(':') + 1);

這意味著在“:”簽署我收到的字符串之後採取一切......但我不確定使用這樣的正則表達式是否安全?

一般承認的答案

嘗試這個

     HtmlDocument htmlDoc = new HtmlDocument();
     htmlDoc.LoadHtml(html);
     var innerText=htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']")
                          .ElementAt(0).InnerText;
     return innerText.replace(/\D/g,'');

如果你只想使用Html Agility包試試這個

       var child = htmlDoc.DocumentNode.SelectNodes("//span[@class='fb']")
                           .FirstOrDefault();
        if (child != null)
        {
            var parent = child.ParentNode;
            parent.RemoveChild(child);
            var innerText = parent.InnerText;              
        }


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow