【问题标题】:Getting a specific data from webpage using only class items仅使用类项从网页获取特定数据
【发布时间】:2012-11-21 13:44:54
【问题描述】:

我希望提取网页上的源代码(我已将其范围缩小到与此处相关的内容:

    <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;
        }

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

【问题讨论】:

    标签: c# class browser


    【解决方案1】:

    你有更好的选择。看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 的跨度元素,它们是具有 class=sideInfoPlayer 的 div 元素的子元素。

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

    【讨论】:

    • 嗨,Anri,它对我不起作用。为了清楚起见,我对这个 c# 有点陌生,因为我以前经常在 VB 中编写代码并尝试使用 C#。要求您在一段代码中向我展示如何操作,这样我才能理解操作并适应我的需求(我希望),这是否太过分了。问候。
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 2012-04-21
    • 2018-09-26
    • 2021-08-04
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多