从HTML中提取字符串
本文关键字:字符串 提取 HTML | 更新日期: 2023-09-27 18:18:19
我想从以下html代码中提取字符串KLE3KAN918D429:
<td class="Labels"> CODE (Sp Number): </td><td width="40.0%"> KLE3KAN918D429</td>
是否有一个方法在c#中,我可以指定源文本,开始字符串,结束字符串,并得到开始和结束之间的字符串?
你是,根据评论,可能最好使用解析库来迭代DOM结构,但如果你可以对你要解析的html做一些假设,你可以做下面的事情:
var html = "<td class='"Labels'"> CODE (Sp Number): </td><td width='"40.0%'"> KLE3KAN918D429</td>";
var labelIndex = html.IndexOf("<td class='"Labels'">");
var pctIndex = html.IndexOf("%", labelIndex);
var closeIndex = html.IndexOf("<", pctIndex);
var key = html.Substring(pctIndex + 3, closeIndex - pctIndex - 3).Trim();
System.Diagnostics.Debug.WriteLine(key);
可能很脆弱,但有时需要的是快速和肮脏。
正如其他人已经建议的那样,您应该使用类似htmllagilitypack的东西来解析html。不要使用正则表达式或其他技巧来解析html。
在html字符串中有几个td
节点。使用td[last()]
XPath很容易得到最后一个:
string html = "<td class='"Labels'"> CODE (Sp Number): </td><td width='"40.0%'"> KLE3KAN918D429</td>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var td = doc.DocumentNode.SelectSingleNode("td[last()]");
var result = td.InnerText.Trim(); // "KLE3KAN918D429"
我建议使用htmllagilitypack。
很简单:
var doc = new HtmlDocument();
doc.LoadHtml(@"<td class=""Labels""> CODE (Sp Number): </td><td width=""40.0%""> KLE3KAN918D429</td>");
var tdNode = doc.DocumentNode.SelectSingleNode("//td[@class='Labels' and text()=' CODE (Sp Number): ']/following-sibling::td[1]");
Console.WriteLine(tdNode.InnerText.Trim());
在开始之前,从NuGet中添加htmllagilitypack:
Install-Package HtmlAgilityPack