Seperti yang dinyatakan dalam pertanyaan, semasa cuba mengumpul pautan klip video dari tapak web tertentu menggunakan kawalan WebBrowser, halaman web mengandungi iframe yang mengehos dokumen dan elemen mereka sendiri. Elemen video tidak boleh ditemui dengan bergantung semata-mata pada elemen Html dokumen utama. Oleh itu, adalah perlu untuk menyelidiki elemen iframe untuk mencari maklumat yang diperlukan.
Untuk mendapatkan semula elemen Html dengan cekap daripada bingkai/iframe, anda boleh mengambil langkah berikut:
1. Rangka kerja pengenalan:
2. Menghuraikan dokumen rangka kerja:
3. Ekstrak atribut elemen Html:
Berikut ialah contoh pelaksanaan yang menunjukkan cara menghuraikan elemen Html daripada bingkai:
<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>
Untuk mengelakkan atribut elemen Html pendua daripada disimpan, kod sampel menggunakan kelas MovieLink tersuai yang mengandungi Kod Hash bagi setiap pautan yang dirujuk. Dengan membandingkan Kod Hash, ia menyemak pendua sebelum menambah item baharu pada senarai Pautan filem.
Pengubahsuaian berikut telah dibuat pada kod:
movielink
dibetulkan kepada MovieLink
dan VIDEO
dibetulkan kepada video
. MovieLink
takrif kelas: Ini menjadikan kod lebih lengkap dan lebih mudah difahami. Ini menjadikan kod lebih mudah untuk disusun dan dijalankan serta lebih konsisten dengan konvensyen pengekodan C#.
Atas ialah kandungan terperinci Bagaimana untuk mengekstrak HtmlElements daripada Frames dan IFrames dalam Kawalan Penyemak Imbas Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!