0

好吧,我的程序正在读取一个 Web 目标,该目标在正文的某处有我想要阅读的 iframe。

我的html源

<html>
...
<iframe src="http://www.mysite.com" ></iframe>
...
</html>

在我的程序中,我有一个方法将源作为字符串返回

public static string get_url_source(string url)
{
   using (WebClient client = new WebClient())
   {
       return client.DownloadString(url);
   }
}

我的问题是我想在读取源代码时获取 iframe 的源代码,就像在正常浏览中一样。

我只能通过使用WebBrowser 类来做到这一点,还是有办法在 WebClient 甚至另一个类中做到这一点?

真正的问题: 我怎样才能得到给定网址的外部 html?欢迎任何方法。

4

3 回答 3

3

获取网站源码后,可以使用HtmlAgilityPack获取iframe的url

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

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

然后打第二个电话get_url_source

于 2013-01-20T20:44:07.247 回答
2

使用HTML Agility Pack解析您的源代码,然后:

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,请尝试使用 ID 属性或其他内容来识别它,以便您只能检索一个来源:

String iframeSource;

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

foreach (HtmlNode node in doc.DocumentElement.SelectNodes("//iframe"))
{
    // Just an example for check, but you could use different approaches...
    if (node.Attributes["id"].Value == 'targetframe')
        iframeSource = get_url_source(node.Attributes["src"].Value);
}
于 2013-01-20T20:41:35.023 回答
0

好吧,经过一番搜索,我找到了答案,这就是我想要的

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.
于 2013-01-22T17:07:06.260 回答