带有框架的HTMLagility包的xpath

时间:2014-03-17 20:38:23

标签: html xpath html-agility-pack

我尝试使用HTMLAgility包从http://www.raws.dri.edu/wraws/orF.html中提取所有包含在左框架中的电台名称。

我的Xpath字符串当前是//frame[@name='list'],此时它返回节点,但我似乎无法访问它的任何子节点。最终,我试图返回frameset[1]/html/body/[@a]中看起来像这样的所有属性:

<a onmouseover="popup('<font color=Black><strong> IDARNG1 RG2  Idaho (RAWS) </strong>    </font> ',615,307);update('IDARNG1 RG2  Idaho (RAWS)',615,307,'idIAN1','raw');return true;"  onmouseout="removeBox();removedot();" href="/cgi-bin/rawMAIN.pl?idIAN1">`

1 个答案:

答案 0 :(得分:2)

以下是浏览器目前正在做的事情:

  • 打开http://www.raws.dri.edu/wraws/orF.html
  • 它解析源代码,并对其上显示的每个<iframe>执行另一个请求。

这意味着您需要手动打开<iframe>指向的网址,该网址可以在src属性中找到。以下是一个例子:

string src = doc.DocumentNode.SelectSingleNode("//frame[@name='list']").GetAttribute("src", "");
string url = "http://www.raws.dri.edu/wraws/" + src;

您正在寻找的网址是:

http://www.raws.dri.edu/wraws/orlst.html

手动打开它,您将看到只有左侧边栏已加载。

下次确保使用像Firebug或Fiddler这样的HTTP Web调试器,看看幕后发生了什么。