如何读取嵌套的iframe';s在C#中的内容

本文关键字:iframe 何读取 读取 嵌套 | 更新日期: 2023-09-27 18:28:47

我想在C#中阅读一个包含iframe内容的HTML页面。我使用了一些技术,但结果总是被拒绝访问。。。

我想阅读的页面包含嵌套的框架:

"主页>iframe>iframe>iframe"

我想阅读所有这些,但我不能单独阅读iframe的内容,因为这会重定向到另一个页面。

<html>
<body>
<iframe>
  <html>
    <body>
    <body>
  </html>
</iframe>
<body>
</html>

我尝试使用web客户端和web浏览器控制方法,但它们都不起作用。

如何读取嵌套的iframe';s在C#中的内容

非常简单。如果您使用的是webBrowser控件:

HtmlElement element = webBrowser1.Document.Window.Frames["frame-id"].Document.GetElementById("element-id");

如果您嵌套了多个IFrame,则可以链接查询:

HtmlElement element = webBrowser1.Document.Window.Frames["frame-id"].Frames["second-frame-id"].Document.GetElementById("element-id");

我添加了Document.GetElementById("element-id");,以防您试图访问IFrame中的元素。如果没有,你可以忽略这些。

请确保查看加载的整个文档的源代码。可能有多个嵌套的IFrame,您需要将其链接在一起才能获得所需内容。

此外,在尝试访问IFrame之前,请确保它已完全加载,否则您将不会有任何运气。有关等待加载动态页面的更多信息,请参阅本文:如何使用.NET';动态生成HTML代码;s WebBrowser或mshtml。HTML文档?

所以你没有放任何代码,也几乎没有在代码上放任何信息。但是,如果您使用的是.NET Framework C#桌面应用程序,则很可能您有无效的html代码或Microsoft的高级代码。使用工具集web浏览器是Internet Explorer的降级版本,在大多数情况下不会阅读HTML5。它将读取iframe和对象。你必须从所有网站的公共http中阅读。

//更新答案:

创建PHP文件并托管它。使用此文件读取网站。

<?php
$homepage = file_get_contents('http://www.foobar.com/');
echo $homepage;
?>

如果PHP无法做到这一点,可以选择:https://code.google.com/p/php-proxy/

使用WebBrowser组件,您可以使用解析HtmlDocument

 foreach (HtmlElement e in WebBrowser.Children.All)
    <your code here>;

使用IFrames,元素在文档中,因此您可以获得:

HtmlElement iframe_element = <your IFrame element>
foreach (HtmlElement e in iFrame_element.Document.Children)
   <your code goes here>;

你想做的是将你的参考保存在你的网页上,这样你就不必每次都解析你的网页来找到你的IFrame。这种递归性质相当缓慢,这会让你省去一些心痛。有了IFrame,就可以编写普通代码来查找所需的HtmlElement。

希望能有所帮助。