我使用C#和Agility Pack来抓取一个网站,但结果与我在firebug中看到的结果不同。我想这是因为该网站正在使用一些Ajax。
// The HtmlWeb class is a utility class to get the HTML over HTTP
HtmlWeb htmlWeb = new HtmlWeb();
// Creates an HtmlDocument object from an URL
HtmlAgilityPack.HtmlDocument document = htmlWeb.Load("http://www.saxobank.com/market-insight/saxotools/forex-open-positions");
// Targets a specific node
HtmlNode someNode = document.GetElementbyId("href");
// If there is no node with that Id, someNode will be null
richTextBox1.Text = document.DocumentNode.OuterHtml;
有人可以提供关于如何正确执行此操作的代码的建议,因为我得到的回报只是简单的HTML。我要找的是
div id= "ctl00_MainContent_PositionRatios1_canvasContainer"
有什么想法吗?
答案 0 :(得分:0)
如果拥有 ID,则使用它 - href
是属性的名称,而不是id
。
HtmlNode someNode =
document.GetElementbyId("ctl00_MainContent_PositionRatios1_canvasContainer");
这将是带有该ID的 div 。
然后,您可以使用以下命令选择该节点的任何a
子节点及其href
属性:
var href = someNode.SelectNodes("//a")[0].Attributes["href"].Value;