HTMLAgilitypack 使用 ajax 调用读取 html 页面信息

Posted

技术标签:

【中文标题】HTMLAgilitypack 使用 ajax 调用读取 html 页面信息【英文标题】:HTMLAgilitypack read html page info with ajax calls 【发布时间】: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 【参考方案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 行为。

以上是关于HTMLAgilitypack 使用 ajax 调用读取 html 页面信息的主要内容,如果未能解决你的问题,请参考以下文章

HtmlAgilityPack,使用 XPath 包含方法和谓词

使用 HtmlAgilityPack 删除属性

使用 HtmlAgilityPack.NETCore 获取网页

是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?

忽略解析错误 HTMLAgilityPack?

使用 Xpath 和 HtmlAgilityPack 的节点为 NULL