【问题标题】:How would I use HTMLAgilityPack to extract the value I want我将如何使用 HTMLAgilityPack 来提取我想要的值
【发布时间】:2010-12-30 17:12:11
【问题描述】:

对于给定的 HTML,我想要 id 的值

 <div class="name" id="john-5745844">
 <div class="name" id="james-6940673">

更新 这就是我目前所拥有的

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.Load(new StringReader(pageResponse));
    HtmlNode root = htmlDoc.DocumentNode;

    List<string> anchorTags = new List<string>();
    foreach (HtmlNode div in root.SelectNodes("//div[@class='name' and @id]"))
    {
        HtmlAttribute att = div.Attributes["id"];
        Console.WriteLine(att.Value);
    }

我得到的错误是在foreach 行说明:Object reference not set to an instance of an object. 我相信这部分是错误的"//div[@class='name' and @id]"

【问题讨论】:

  • XPath 代码应该加载所有具有类“名称”并包含 id 属性的 div。 HTML 是静态的吗?还是用js生成的?
  • @NickAldwin 原始 html 更复杂,我认为在尝试简化问题时,它影响了解决方案。我现在正在尝试包含原始 html。
  • 如何判断 HTML 是静态的还是用 js 生成的?再看一遍,你的 XPath 查询应该是正确的
  • 发现我的错误,我引用了以前的 html 字符串 smacks head

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


【解决方案1】:

从示例页面修改:

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm"); //or whatever HTML file you have
foreach(HtmlNode div in doc.DocumentNode.SelectNodes("//div[@class='name' and @id]")
{
   HtmlAttribute att = div["id"];
   //Do something with att.Value
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多