【问题标题】:Html Agility Pack xpath throws null exceptionHtml Agility Pack xpath 抛出空异常
【发布时间】:2020-01-31 16:03:52
【问题描述】:

我正在尝试解析this page。 要选择我需要的节点,我使用 XPath,我的 XPath 在我的浏览器中运行良好,但是在我的项目中使用它时,它返回一个空异常。 标题的 XPath 工作正常,但描述的 XPath 不行。

HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load("http://nl.aliexpress.com/item/4000646776468.html?spm=a2g0o.productlist.0.0.531f7aa3iGAnCb&algo_pvid=0b20aa21-fd7f-4826-81a5-c9aac5254da8&algo_expid=0b20aa21-fd7f-4826-81a5-c9aac5254da8-0&btsid=8849a0ec-e95d-447f-a6f9-34dcd58f1381&ws_ab_test=searchweb0_0,searchweb201602_4,searchweb201603_53");
        ProductModel product = new ProductModel { 
             Title = document.DocumentNode.SelectSingleNode("//head/title").InnerText,
             Description = document.DocumentNode.SelectSingleNode("/html/body/div[5]/div/div[3]/div[2]/div[2]/div[1]/div/div[2]/div[1]/div/div/div/div[1]/p[2]").InnerText};
        return View(product);

【问题讨论】:

  • 这可能是由于脚本在浏览器中动态创建该节点,而不是在您的项目中。
  • 描述应该是什么?从那个网址
  • @Jawad 描述应该选择第一个描述框。第一行文字是“Ontworpen door Apple”(那是荷兰语)
  • 是的,你不能这样做。您正在解析的 Html 是基本 html,没有浏览器呈现的数据。见我的response to another pos 与此类似。
  • @Jawad 你是否推荐一个替代 hap 来运行所有 javascript 渲染?

标签: c# asp.net xpath html-agility-pack


【解决方案1】:

事实证明,动态呈现内容确实存在问题。 对于那些遇到一些问题的人,如果您使用的是 c#,请查看 selenium。 我使用 puppeteer 库切换到节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2018-06-13
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多