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.NETCore 获取网页