我想在C#中阅读包含iframe内容的HTML页面。我使用了一些技术,但结果总是被拒绝...
我想要阅读的页面包含嵌套框架:
"主页> iframe> iframe> iframe"
我想阅读所有内容,但我无法单独阅读iframe的内容,因为这会重定向到另一个页面。
<html>
<body>
<iframe>
<html>
<body>
<body>
</html>
</iframe>
<body>
</html>
我尝试使用网络客户端和网络浏览器控制方法,但它们没有用。
答案 0 :(得分:0)
所以你没有代码,几乎没有代码的任何信息。但是,如果您使用的是.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/
答案 1 :(得分:0)
使用WebBrowser组件,您可以使用:
解析HtmlDocument foreach (HtmlElement e in WebBrowser.Children.All)
<your code here>;
使用IFrame,元素在Document中,所以你得到:
HtmlElement iframe_element = <your IFrame element>
foreach (HtmlElement e in iFrame_element.Document.Children)
<your code goes here>;
您要做的是将您的参考资料保存在您的网页上,这样您就不必每次都通过网页解析您的IFrame。这种递归性质相当缓慢,这将为您节省一些心痛。如果您有IFrame,那么您可以编写正常代码来查找所需的Html元素。
希望有所帮助。
答案 2 :(得分:0)
非常简单。如果您使用的是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之前,请确保IFrame已满载,否则您将无法运气。有关等待加载动态网页的详细信息,请参阅此文章:how to dynamically generate HTML code using .NET's WebBrowser or mshtml.HTMLDocument?