2

我在想要提取的网页上有一个源代码(我已将其范围缩小到与此处相关的内容:

    <div class="sideInfoPlayer">
<a class="signLink" href="spieler.php?uid=12345" title="Profile">
    <span class="wrap">Wagamama</span>
</a>

现在这里的技巧是我想将 Wagamama 这个词放入一个消息框中,但是该站点的每个页面上的这个词都会发生变化,所以我需要获取那个元素,但是这个页面上没有 ID。因此,我想先搜索名为“sideInfoPlayer”的类,然后在前一个类块中找到“包装”类。

我写了下面的内容来获得第一个,但不知道如何处理第二个然后获得所需的值。

        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("div");
        foreach (HtmlElement element in col)
        {
            string cls = element.GetAttribute("className");
            if (String.IsNullOrEmpty(cls) || !cls.Equals("sideInfoPlayer"))
                continue;
        }

我希望你能帮助我解决这个问题。

4

1 回答 1

0

你有更好的选择。看看http://htmlagilitypack.codeplex.com/

在这里:我如何解析 html 字符串

首先,您需要通过手动下载或使用 NuGet 包管理器来添加对 HtmlAgilityPack 库的引用。

// loading html into HtmlDocument
var doc = new HtmlWeb().Load("http://website.com/mypage");
// walking through all nodes of interest
foreach (var node in doc.DocumentNode.SelectNodes("//div[@class='sideInfoPlayer']/span[@class='wrap']"))
{
  // here is your text: node.InnerText
}

//div[@class='sideInfoPlayer']/span[@class='wrap']被称为Xpath 表达式,这个表达式的字面意思是“给我所有带有 class=wrap 的 span 元素,它们是带有 class=sideInfoPlayer 的 div 元素的子元素。

我没有测试它,但它应该可以工作。

于 2012-11-21T13:48:26.053 回答