【问题标题】:htmlagilitypack selectsinglenode returning nullhtmlagilitypack 选择单个节点返回 null
【发布时间】:2018-05-17 07:08:27
【问题描述】:

关于那个的问题是,它在 20 次左右的尝试中只有一次正确运行,而且它完全是随机的。无法处理这种情况......将不胜感激^^

        WebClient client = new WebClient();

        client.Encoding = Encoding.UTF8;
        try
        {
            html = client.DownloadString(url);
        }
        catch (WebException)
        {
            if (MessageBox.Show("url'de hata", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
            {

            }

        }

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        HtmlWeb web = new HtmlWeb();

        doc.LoadHtml(html);

        HtmlNode foo = doc.DocumentNode.SelectSingleNode(Xpath);    

        Listbox1.Items.Add(foo.Attributes["href"].Value); //error here 
        currentPage = (foo.Attributes["href"].Value);

【问题讨论】:

  • 请包括一个可以使用的 HTML 示例,以及一个无法使用的 HTML 示例。如果我们没有这些信息,除了表示同情,我们还能做什么?我非常怀疑这种方法是否闹鬼。这是有原因的。
  • 问题是它可以工作,但不能在同一个 html 中工作
  • 我不相信你。你做了什么来确认它总是完全相同的HTML,一个字符一个字符?如果您的答案是“我认为应该是”,那不是正确的答案。但是向我们展示 HTML,以便我们自己查看。
  • 只有在DownloadString( ) 并不总是返回相同的文档时才会真正发生这种情况。这是完全可能的。
  • 这怎么可能?

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


【解决方案1】:

你必须检查节点不为空。服务器可能会为每个请求返回不同的响应。服务器可能会返回 20 到 1 个您想要的元素。你确定内容是一样的?会话可能会因情况而异。确保成功和不成功的内容是相等的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多