c# - 仅使用类项从网页获取特定数据

标签 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”的类,然后在前一个类 block 中找到“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;
        }

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

最佳答案

您有更好的选择。看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=wrap 的 span 元素,它们是带有 class=sideInfoPlayer 的 div 元素的子元素。

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

关于c# - 仅使用类项从网页获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494642/

相关文章:

C# 项目更新从两个表中选择的行的 MySQL 列表

c++ - 构造函数不更新类成员变量

c# - 使用 WebBrowser Winforms 控件通过 SSL 访问内网

javascript - 当用户点击浏览器后退按钮时触发事件

c# - XNA 4.0 - Alpha 和多个纹理......搞砸了

c# - FileSystemWatcher 跳过一些事件

c# - 如何从控制台读取连续的输入行以用于 Add() 方法?

java - 根据级别/阶段加载类(class)?

class - C++ - 在以下情况下,为什么我必须包含 .cpp 文件和/而不是 .h 文件才能访问全局变量的值?

html - 强制 IE9 模拟 IE8。可能的?