0

さて、私のプログラムは、読みたいiframeが体のどこかにあるWebターゲットを読んでいます。

私の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 または別のクラス内で行う方法がありますか?

本当の質問: URL を指定して外側の 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;

次に、2回目の呼び出しを行います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 属性などを使用して識別し、1 つのソースのみを取得できるようにします。

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 に答える