HtmlAgiltyPack 解析 HTML 并从 span 标签和 class 名称中取出值
HtmlAgiltyPack parse HTML and take value out of span tag and class name
我有一个 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;
而这个 returns 我这个来自 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 敏捷包试试这个
var child = htmlDoc.DocumentNode.SelectNodes("//span[@class='fb']")
.FirstOrDefault();
if (child != null)
{
var parent = child.ParentNode;
parent.RemoveChild(child);
var innerText = parent.InnerText;
}
我有一个 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;
而这个 returns 我这个来自 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 敏捷包试试这个
var child = htmlDoc.DocumentNode.SelectNodes("//span[@class='fb']")
.FirstOrDefault();
if (child != null)
{
var parent = child.ParentNode;
parent.RemoveChild(child);
var innerText = parent.InnerText;
}