我有一个带有这个html的字符串:
<div class="cnt_listas"><ol id="listagem1" class="cols_2">
<li><a href="/laura-pausini/73280/">16/5/74</a></li>
<li><a href="/laura-pausini/73280/traducao.html">16/5/74</a></li>
</div>
我需要在<ol id="listagem1" class="cols_2">
和</div>
之间获取所有文字。
此字符串中的文本可能与此不同,它是网站的结果。
我怎样才能得到这部分内容?
在这种情况下,我需要的文字是:
<li><a href="/laura-pausini/73280/">16/5/74</a></li>
<li><a href="/laura-pausini/73280/traducao.html">16/5/74</a></li>
答案 0 :(得分:2)
我会使用HtmlAgilityPack来解析html
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var h = doc.DocumentNode.SelectSingleNode("//ol[@id='listagem1']").InnerHtml;
答案 1 :(得分:0)
几周前我在Stackoverflow上找到这段代码时需要相同的算法怎么样?
private IEnumerable<string> GetSubStrings(string input, string start, string end)
{
Regex r = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
MatchCollection matches = r.Matches(input);
foreach (Match match in matches)
yield return match.Groups[1].Value;
}
编辑: This是此代码的来源。
编辑2:要对我的回答发表评论,请查看this。
答案 2 :(得分:0)
这不是解析HTML的最佳方法,但这是一种扩展方法,通常会以您要求的方式处理字符串:
public static string Between(this string source, string start, string end)
{
// Find the first occurence of the start string
var i = source.IndexOf(start);
if (i < 0)
return string.Empty;
// Advance past the start string
i += start.Length;
// Find the next occurence of the end string
var j = source.IndexOf(end, i);
if (j < 0)
return string.Empty;
// Return the string found between the positions
return source.Substring(i, j - i);
}
将它放在一个静态类中,然后像这样调用它:
var substring = s.Between("foo","bar");
根据需要处理边缘情况(未找到字符串等)
答案 3 :(得分:-1)
我不确切地说你在说什么......也许这就是:
string specificWord = stringWhtml.Substring(stringWhtml.IndexOf("cols_2") + 8, stringWhtml.IndexOf("</div>"));