试图在C#上使用Agility抓取网页

时间:2013-01-17 17:35:47

标签: c# ajax screen-scraping html-agility-pack

我使用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"

有什么想法吗?

1 个答案:

答案 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;