クエリに記載されているように、WebBrowser コントロールを使用して特定の Web サイトからビデオ クリップ リンクを収集しようとすると、Web ページには独自のドキュメントと要素をホストする iframe が含まれます。 video 要素は、メインドキュメントの Html 要素のみに依存して見つけることはできません。したがって、必要な情報を見つけるには、iframe の要素を詳しく調べる必要があります。
フレーム/iframe から HTML 要素を効率的に取得するには、次の手順を実行できます:
1. 識別フレームワーク:
2. フレームワークドキュメントを解析します:
3. HTML 要素の属性を抽出します:
これは、フレームから HTML 要素を解析する方法を示すサンプル実装です:
<code class="language-c#">public class FrameHtmlElementParser { private List<MovieLink> movieLinks = new List<MovieLink>(); //更正变量名 public void ParseMovies(WebBrowser browser) { browser.DocumentCompleted += Browser_DocumentCompleted; } private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { var browser = sender as WebBrowser; if (browser.ReadyState != WebBrowserReadyState.Complete) { return; } var documentFrames = browser.Document.Window.Frames; foreach (HtmlWindow frame in documentFrames) { try { var videoElement = frame.Document.Body.GetElementsByTagName("video").OfType<HtmlElement>().FirstOrDefault(); //更正标签名 if (videoElement != null) { string videoLink = videoElement.GetAttribute("src"); int hash = videoLink.GetHashCode(); if (movieLinks.Any(m => m.Hash == hash)) //更正变量名 { // 完成此 URL 的解析。删除处理程序或采取其他适当的操作。 return; } string sourceImage = videoElement.GetAttribute("poster"); movieLinks.Add(new MovieLink //更正变量名 { Hash = hash, VideoLink = videoLink, ImageLink = sourceImage }); } } catch (UnauthorizedAccessException) { } // 无法避免:忽略 catch (InvalidOperationException) { } // 无法避免:忽略 } } } public class MovieLink //添加MovieLink类定义 { public int Hash { get; set; } public string VideoLink { get; set; } public string ImageLink { get; set; } }</code>
HTML 要素の属性が重複して保存されるのを防ぐために、サンプル コードでは、参照される各リンクの HashCode を含むカスタム MovieLink クラスを使用します。 HashCode を比較することにより、新しい項目を movieLinks リストに追加する前に重複がないかチェックします。
コードに次の変更が加えられました:
movielink
は MovieLink
に修正され、VIDEO
は video
に修正されます。 MovieLink
クラス定義を追加しました: これにより、コードがより完全になり、理解しやすくなります。 これにより、コードのコンパイルと実行が容易になり、C# コーディング規約との一貫性が高まります。
以上がWebBrowser コントロールのフレームおよび IFrame から HtmlElement を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。