쿼리에 명시된 바와 같이 WebBrowser 컨트롤을 사용하여 특정 웹사이트에서 비디오 클립 링크를 수집하는 동안 웹페이지에는 자체 문서와 요소를 호스팅하는 iframe이 포함되어 있습니다. 주 문서의 Html 요소에만 의존하여 video 요소를 찾을 수 없습니다. 따라서 필요한 정보를 찾으려면 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에서 HtmlElements를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!