【问题标题】:HTMLAgilitypack read html page info with ajax callsHTMLAgilitypack 使用 ajax 调用读取 html 页面信息
【发布时间】:2014-01-03 14:36:47
【问题描述】:

我正在使用 HtmlAgilitypack 来读取特定 url 的特定 html 元素。 我面临的问题是其中一个 html 标记内容由 AJAX 请求填充。那么我该如何阅读呢?

<div id="priceInfo"></div>

我用来读取网址的代码是

HtmlWeb _htmlWeb = new HtmlWeb();
HtmlAgilityPack.HtmlDocument _webDoc = _htmlWeb.Load(webUrl);
// HtmlNodeCollection _priceNode =  Gets the node with id priceInfo

这个 div 的内容由一个 ajax 请求填充,我想在这个 DIv 被填充后读取它的内容。我该怎么做呢

【问题讨论】:

  • 我不认为你可以用 Html Agility Pack 做到这一点,因为它无法执行脚本。
  • 好吧,您可以模拟按钮单击并可能通过代码 HtmlAgilityPack 中的一些更改发布数据事件,但 Ajax 我不确定您是否可以共享您要废弃的网络链接。会很好的
  • 示例:我正在尝试从商店 tanum.no/_faglitteratur/pedagogikk/… 获取一本书的价格值。在这家商店,他们使用一些 ajax 调用来填充价格 div
  • 你在萤火虫中检查过这个网址吗?它通过输入一些 id tanum.no/tanum/rest/price/… 调用以下 url 来获取价格
  • 据我所知,只需要更改此参数即可获取任何书籍的价格 p=P2_11304413

标签: c# html-agility-pack


【解决方案1】:

HtmlAgilityPack 用于服务器端。根据您的说法,您试图在客户端而不是在服务器端断言一个值。

ajax 调用完成后,您应该考虑使用 jquery/javascript。

ajax ({ ....
  .done(...) {
    // handling the return result...
    alert($("#yourHtmlId").val()); // show one of your html tag value attribute.
  }   
})

http://api.jquery.com/jQuery.ajax/

【讨论】:

  • 我正在尝试从控制台应用程序读取 html 页面的内容,我猜这个提示与此无关
  • 这个答案不能解决问题。即使从脚本中您可以识别出哪个控件是由 ajax 调用加载的,您仍然无法获取数据。因为服务器端的页面没有模仿 ajax 行为。
猜你喜欢
  • 1970-01-01
  • 2013-05-03
  • 2010-12-03
  • 2014-11-23
  • 2018-04-25
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多