Парсинг содержимого iframe - C#
Формулировка задачи:
Здравствуйте! Решение ищу уже довольно долго. На этом форуме есть похожие темы, но они немного не подходят.
Или совсем уже извращенные на подобие
Объясните, пожалуйста. До всего всегда сам докапывался, а тут - прям никак!
Спасибо большое за ответы.
Задача:
Программа c# загружает страницу сайта site1.com, на которой, помимо прочего, расположен iframe с некоторыми данными. Так вот эти самые данные нужно оттуда программно "достать" и обработать.Проблема и условия:
1. В указанный iframe данные загружаются автоматически с сайта site2.com, то есть на загружаемой страничке есть код: <iframe src="site2.com/stuff..."></iframe> 2. Через запрос по адресу, указанному в src, данные не достать, там какая-то хитрая внутри система javascript'ов и черт знает чего еще. 3. Если страницу загружать с помощью компонента WebBrowser, в нем все отлично отображается, однако с помощью WebBrowser.DocumentText ничего не достать, естественно.Вопрос:
Как достать данные из iframe? Я пробовал по-разному через WebBrowser.Document, даже пытался что-то сделать с помощью mshtml, - ни в какую! Мне не хватает знаний, я не понимаю,где лежит то, что реально отображается в WebBrowser?
. Он ведь уже все отображает, все внутренности, как до них докопаться? На сколько я понимаю, где-то, в каком-то свойстве лежит DOM уже готовой, загруженной странички, в которой уже выполнены все скрипты и загружены все картинки и т.п. Или его можно как-то получить. Но я путаюсь в окнах, фреймах и приведениях. Я уже писал "монстроподобные" цепочки типаHTMLFrameBase frame = myWebBrowser.Document.GetElementsByTagName("IFrame")[0].DomElement as HTMLFrameBase;
myWebBrowser.Document.Window.Document.Window......
Решение задачи: «Парсинг содержимого iframe»
textual
Листинг программы
if ( webBrowser1.Document == null ) { return; } HtmlElementCollection elements = webBrowser1.Document.GetElementsByTagName( "HTML" ); if ( elements.Count == 1 ) { var htmlElement = elements[ 0 ]; string pageSource = htmlElement.OuterHtml; File.WriteAllText( "C:\\code.html", pageSource ); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д