仅使用课程项目从网页获取特定数据

时间:2012-11-21 13:44:54

标签: c# class browser

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

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

现在的诀窍是我想把Wagamama这个词放到一个消息框中,但是那个词会在该网站的每个页面上发生变化,所以我需要获得该元素,但此页面上没有ID。因此,我想首先搜索名为“sideInfoPlayer”的类,然后在前一个类块中找到“wrap”类。

我已经写了下面的第一个,但不知道如何处理第二个,然后得到所需的值。

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

我希望你可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

在这里:How can i parse html string

首先,您需要手动下载或使用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 Expression,这个字面意思是“使用class = sideInfoPlayer来获取所有带有class = wrap的所有span元素,这些元素是div元素的子元素。

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