【问题标题】:C# - Extract speciifc div class text using HTMLAgilityC# - 使用 HTML Agility 提取特定的 div 类文本
【发布时间】:2013-10-07 09:06:32
【问题描述】:

我有一个 C# 代码,我想在其中提取以下值(下面的 HTML 代码中的文本“我想要这个文本”)。我已重新格式化 HTML 代码以使其易于阅读。

<div class="paste-copy-url" style="margin:0 0 0 0;">
    <h4>My Stats:</h4>
    <div class="line">
        <div class="wrap-input">
            <input onclick="this.select();" value="I want this text" readonly="readonly">
        </div>
    </div>
    <h4>Website Link:</h4>
    <div class="line">
        <div class="wrap-input"><input onclick="this.select();" value="Some value" readonly="readonly">
        </div>
    </div>
</div>

我试过的代码(它给了我文字:“网站链接:”):

var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']");

我做错了什么?我可以使用这种方法来获取该元素吗(页面中只有 div 类的 1 个实例)?

【问题讨论】:

  • 你的意思是myvaluetoextractnull...上面的xpath是正确的,应该可以工作..
  • 它给了我文字:“网站链接:”(标题而不是我想要的值)
  • @touyets 你说的是returns a null value,现在说It is giving me the text : "Website Link:"。哪一个是正确的?
  • 我编辑了我的帖子。正确的是我更正页面网址后的结果:它给了我文字:“网站链接:”

标签: c# html css html-agility-pack


【解决方案1】:
var input = htmlDocument.DocumentNode
           .SelectSingleNode("//div[@class='paste-copy-url']//div[@class='wrap-input']/input");
var yourText = input.Attributes["value"].Value;

【讨论】:

  • 它给了我“Some value”的值,这是第二个元素的值,而不是我想要的第一个。
  • @touyets 不,它会返回I want this text 给定您问题中的示例html。
【解决方案2】:

你可以这样做:

var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']//input");
var value = myvaluetoextract.GetAttributeValue("value", null);

//input 表示您在div 的子树中递归搜索input 元素。 GetAttributeValue 是一个永远不会失败的助手,即使该属性不存在(在这种情况下,如果将返回第二个传递的参数 - 这里是 null

【讨论】:

  • 它给了我“Some value”的值,这是第二个元素的值,而不是我想要的第一个。
  • 那么您的提取与您的真实代码不匹配。我的代码适用于您问题中的 html。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2011-11-19
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多