Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以通过WebClient阅读iframe吗(我想要外部html)?_C#_Browser_Html Parsing_Webclient - Fatal编程技术网

C# 我可以通过WebClient阅读iframe吗(我想要外部html)?

C# 我可以通过WebClient阅读iframe吗(我想要外部html)?,c#,browser,html-parsing,webclient,C#,Browser,Html Parsing,Webclient,我的程序正在读取一个网络目标,在身体的某个地方有我想要读取的iframe 我的html源代码 <html> ... <iframe src="http://www.mysite.com" ></iframe> ... </html> 我的问题是,我想在iframe读取源代码时获取它的源代码,就像在正常浏览中一样 我只能通过使用WebClient或其他类来实现这一点吗 真正的问题: 如何在给定url的情况下获取外部html?欢迎使用任何方法。使用解

我的程序正在读取一个网络目标,在身体的某个地方有我想要读取的iframe

我的html源代码

<html>
...
<iframe src="http://www.mysite.com" ></iframe>
...
</html>
我的问题是,我想在iframe读取源代码时获取它的源代码,就像在正常浏览中一样

我只能通过使用WebClient或其他类来实现这一点吗

真正的问题: 如何在给定url的情况下获取外部html?欢迎使用任何方法。

使用解析源代码,然后:

List<String> iframeSource = new List<String>();

HtmlDocument doc = new HtmlDocument();
doc.Load(url);

foreach (HtmlNode node in doc.DocumentElement.SelectNodes("//iframe"))
    iframeSource.Add(get_url_source(mainiFrame.Attributes["src"]));
使用解析源代码,然后:

List<String> iframeSource = new List<String>();

HtmlDocument doc = new HtmlDocument();
doc.Load(url);

foreach (HtmlNode node in doc.DocumentElement.SelectNodes("//iframe"))
    iframeSource.Add(get_url_source(mainiFrame.Attributes["src"]));

获取站点源代码后,可以使用获取iframe的url

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var src = doc.DocumentNode.SelectSingleNode("//iframe")
            .Attributes["src"].Value;

然后第二次调用
get\u url\u source

获取站点的源代码后,您可以使用获取iframe的url

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var src = doc.DocumentNode.SelectSingleNode("//iframe")
            .Attributes["src"].Value;

然后再打第二个电话到
get\u url\u source

好吧,我在搜索后找到了答案,这就是我想要的

webBrowser1.Url = new Uri("http://www.mysite.com/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
string InnerSource = webBrowser1.Document.Body.InnerHtml; 
                            //You can use here OuterHtml too.

我在搜索后找到了答案,这就是我想要的

webBrowser1.Url = new Uri("http://www.mysite.com/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
string InnerSource = webBrowser1.Document.Body.InnerHtml; 
                            //You can use here OuterHtml too.


我猜您可以通过java脚本访问url。请注意,如果您从另一个域访问页面,您可能会遇到跨站点脚本的安全问题。是的,iframe来自另一个域,但为什么会出现此问题?@Incognito:在wiki上查看]实际上我的页面涉及脚本,经过一些研究,我发现到目前为止,解决方案是这个>webBrowser1.Document.ActiveElement.OuterHtml.ToString();所以我需要页面的外部html。另一个类似的问题是这里->猜测您可以通过java脚本访问url。请注意,如果您从另一个域访问页面,您可能会遇到跨站点脚本的安全问题。是的,iframe来自另一个域,但为什么会出现此问题?@Incognito:在wiki上查看]实际上我的页面涉及脚本,并且经过一些研究我发现目前为止最接近的解决方案是这个>webBrowser1.Document.ActiveElement.OuterHtml.ToString();所以我需要页面的外部html。另一个类似的问题是->是,我针对单个iframe,我将尝试您的示例并回复。是,我针对单个iframe,我尝试您的示例并回复。这将导致iframe更改其数据。@Incognito,
更改其数据
?这是什么意思?怎么做?因为是iframe加载新数据的时候了,所以我想要第一次加载页面时生成的数据。这就像有一个脚本,它在iframe中生成随机数。@Incognito
会导致iframe更改其数据
,我认为正确的短语应该是“这会导致iframe不更改其数据”,我的意思是第二次调用iframe的src,正如您在回答中所说,我已经试过了。每次访问iframe的src时,它都会更改其数据。因此,如果我使用您的方法找到iframe的src并调用get_url_源,那么将再次调用iframe,从而生成不可用的新数据。这就是为什么我第一次调用我的页面时想要获取iframe的源/数据。这会导致iframe更改其数据。@Incognito,
更改其数据
?这是什么意思?怎么做?因为是iframe加载新数据的时候了,所以我想要第一次加载页面时生成的数据。这就像有一个脚本,它在iframe中生成随机数。@Incognito
会导致iframe更改其数据
,我认为正确的短语应该是“这会导致iframe不更改其数据”,我的意思是第二次调用iframe的src,正如您在回答中所说,我已经试过了。每次访问iframe的src时,它都会更改其数据。因此,如果我使用您的方法找到iframe的src并调用get_url_源,那么将再次调用iframe,从而生成不可用的新数据。这就是为什么我第一次调用我的页面时想要获取iframe的源/数据。