C# Html 敏捷包 (SelectSingleNode)

发布于 2024-09-25 04:44:07 字数 486 浏览 8 评论 0原文

我正在尝试解析该字段,但无法使其工作。当前尝试:

var name = doc.DocumentNode.SelectSingleNode("//*[@id='my_name']").InnerHtml;


<h1 class="bla" id="my_name">namehere</h1>

错误:未将对象引用设置为对象的实例。

感谢任何帮助。

@John - 我可以保证 HTML 已正确加载。我正在尝试阅读我的 Facebook 名称以进行学习。这是 Firebug 插件的屏幕截图。我使用的版本是1.4.0。

http://i54.tinypic.com/kn3wo.jpg

我想问题是 profile_name 是子节点或其他东西,这就是我无法读取它的原因?

I'm trying to parse this field, but can't get it to work. Current attempt:

var name = doc.DocumentNode.SelectSingleNode("//*[@id='my_name']").InnerHtml;


<h1 class="bla" id="my_name">namehere</h1>

Error: Object reference not set to an instance of an object.

Appreciate any help.

@John - I can assure that the HTML is correctly loaded. I am trying to read my facebook name for learning purposes. Here is a screenshot from the Firebug plugin. The version i am using is 1.4.0.

http://i54.tinypic.com/kn3wo.jpg

I guess the problem is that profile_name is a child node or something, that's why I'm not able to read it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

巴黎夜雨 2024-10-02 04:44:07

您的代码不起作用的原因是页面上的 JavaScript 实际上写出了

标记,因此如果您从如果用户代理(或通过 AJAX)不执行 JavaScript,那么您将找不到该元素。

我可以使用以下选择器获得自己的名字:

string name = 
    doc.DocumentNode.SelectSingleNode("//a[@id='navAccountName']").InnerText;

The reason your code doesn't work is because there is JavaScript on the page that is actually writing out the <h1 id='profile_name'> tag, so if you're requesting the page from a User Agent (or via AJAX) that doesn't execute JavaScript then you won't find the element.

I was able to get my own name using the following selector:

string name = 
    doc.DocumentNode.SelectSingleNode("//a[@id='navAccountName']").InnerText;
江南烟雨〆相思醉 2024-10-02 04:44:07

试试这个:

var name = doc.DocumentNode.SelectSingleNode("//@id='my_name'").InnerHtml;

Try this:

var name = doc.DocumentNode.SelectSingleNode("//@id='my_name'").InnerHtml;
仅冇旳回忆 2024-10-02 04:44:07
HtmlAgilityPack.HtmlNode name = doc.DocumentNode.SelectSingleNode("//h1[@id='my_name']").InnerText;
HtmlAgilityPack.HtmlNode name = doc.DocumentNode.SelectSingleNode("//h1[@id='my_name']").InnerText;
野稚 2024-10-02 04:44:07
 public async Task<List<string>> GetAllTagLinkContent(string content)
    {


        string html = string.Format("<html><head></head><body>{0}</body></html>", content);
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);
        var nodes = doc.DocumentNode.SelectNodes("//[@id='my_name']");
        return nodes.ToList().ConvertAll(r => r.InnerText).Select(j => j).ToList();

    }

("//a[@href]"); 没问题。你可以按照上面的方法尝试一下,希望对你有帮助

 public async Task<List<string>> GetAllTagLinkContent(string content)
    {


        string html = string.Format("<html><head></head><body>{0}</body></html>", content);
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);
        var nodes = doc.DocumentNode.SelectNodes("//[@id='my_name']");
        return nodes.ToList().ConvertAll(r => r.InnerText).Select(j => j).ToList();

    }

It's ok with ("//a[@href]"); You can try it as above.Hope helpful

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文