-1

我有一个带有这个 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>
4

4 回答 4

2

我会使用HtmlAgilityPack 来解析 html

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var h = doc.DocumentNode.SelectSingleNode("//ol[@id='listagem1']").InnerHtml;
于 2012-10-04T05:54:38.807 回答
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");

根据需要处理边缘情况(未找到字符串等)

于 2012-10-03T23:38:25.157 回答
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;
}

编辑: 是此代码的来源。

编辑 2:要反驳对我的回答的评论,请看一下这个

于 2012-10-03T23:23:06.677 回答
-1

我不明白你在说什么......也许是这样的:

string specificWord = stringWhtml.Substring(stringWhtml.IndexOf("cols_2") + 8, stringWhtml.IndexOf("</div>"));
于 2012-10-03T23:21:56.310 回答