miathe
|
|||||||||||
1 | |||||||||||
Парсинг содержимого iframe11.02.2011, 01:16. Показов 9566. Ответов 14
Метки нет (Все метки)
Здравствуйте! Решение ищу уже довольно долго. На этом форуме есть похожие темы, но они немного не подходят.
Задача: Программа 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 уже готовой, загруженной странички, в которой уже выполнены все скрипты и загружены все картинки и т.п. Или его можно как-то получить. Но я путаюсь в окнах, фреймах и приведениях. Я уже писал "монстроподобные" цепочки типа
Спасибо большое за ответы. |
11.02.2011, 01:16 | |
Ответы с готовыми решениями:
14
Парсинг содержимого сайта с протоколом https Парсинг содержимого iframe Перезапись содержимого iframe Изменение содержимого iframe |
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 3
|
|
15.02.2011, 15:45 | 2 |
тоже интересен этот момент.
0
|
Мохаммед Али
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
|
|
15.03.2011, 11:40 | 3 |
любой элемент из веббраузера извлекается с помощью getelementsbytagname(), причем он извлекает эти элементы со всех уровней вложенности, если получился какой то массив элементов на выходе этого метода то чтобы получить нужный элемент придеться видимо посмотреть его содержимое либо родительские узлы.
0
|
3 / 3 / 2
Регистрация: 12.03.2011
Сообщений: 11
|
|
16.03.2011, 16:35 | 4 |
Код
IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.DomDocument; int index = 1; \\номер фремйа который парсим IHTMLWindow2 frame = (IHTMLWindow2)doc.frames.item(index); string content = frame.document.body.innerHTML;
0
|
Мохаммед Али
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
|
||||||
16.03.2011, 17:21 | 5 | |||||
0
|
3 / 3 / 2
Регистрация: 12.03.2011
Сообщений: 11
|
|
16.03.2011, 21:28 | 6 |
0
|
Мохаммед Али
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
|
|
17.03.2011, 12:12 | 7 |
разве они в штмл коде загруженной страницы после генерации не присутствуют?
0
|
3 / 3 / 2
Регистрация: 12.03.2011
Сообщений: 11
|
|
20.03.2011, 14:40 | 8 |
0
|
Мохаммед Али
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
|
||||||
19.04.2011, 14:30 | 9 | |||||
а тип IHTMLDocument2 из бибилиотеки mshtml?
и еще а нельзя ли получить сразу HtmlElementCollection фрейма? Добавлено через 19 часов 11 минут кароче вот вариант без использования mshtml - гораздо удобнее мне кажется
ВОТ У МЕНЯ ВОПРОС! возможно ли изменить содержимое загруженного фрейма, потому что я пытался изменить бгкалор какой либо ячейки и у меня не получилось, если возможно то как? приведите пример, или измененеие его содержимого не отличается от изменения содержимого html документа без фреймов? Добавлено через 23 часа 6 минут вопрос отпадает -конечно же можно, просто нельзя изменить те атрибуты и параметры которые перекрываются описанием класса, чтобы изменить класс нужно будет обработать css код, он вроде может быть как в штмл так и отдельно а фрейм будет ссылаться на него линком. Тоесть нужно будет считать цсску и переписать ее как нужно с изменением соответствующих атрибутов.
0
|
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 6
|
|
12.05.2012, 21:07 | 10 |
Ребят, у меня тоже актуальна данная задачка. Выводу окно, ссылка открывается, но доступ не получить. Можно ли все-таки как-то загрузить то, что отобразилось куда-то, а потом распарсить. Мне не нужно ничего менять, т.е. при чем тут безопасность.
В качестве моей задачи, хочу автоматизировать одну вещицу, которую надоело делать. В ВК открывается по прямой ссылке приложение и нужно выцепить из него все id, но не пойму как это сделать. Пробовал прямой ссылкой, в таком случае iframe пустой открывается, т.е. есть завязка на ВК. Может кто сталкивался примерно с такой задачей и есть маленький пример.
0
|
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
|
|
12.05.2012, 21:43 | 11 |
sergboro, что за приложение дай ссылку, поковыряюсь
0
|
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 6
|
|
23.05.2012, 13:08 | 12 |
Приветствую, приложение Pro Football, http://vk.com/app2201894?union=108759204 вот как пример, прямая ссылка, которая открывает состав, но вот хоть ты тресни не получается считать. Уже все перепробовал, я в прострации. Правда на пару дней задачку отложил, т.к. по работе был занят.
Добавлено через 10 минут Кто подскажет (скинет кусок кода) как считать, постараюсь отблагодарить, т.к. времени данный процесс съедает много, а время как говорится - деньги . Хотелось бы автоматизировать, а вот никак не получается. Сразу уточню, что пишется не бот, а некая программка, которая поможет немного сэкономить времени на рутинных задачах.
0
|
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
|
||||||
22.06.2012, 00:13 | 13 | |||||
Топик наверно уже не актуален, но в будущем возможно кому нибудь пригодиться)
Я столкнулся с такой же проблемой (мне нужно получить фрейм вложенный во фрейм, который методом GetElementsByTagName("iframe") не достаётся) и попробывал использовать код asd321, но он не сработал, т.к.: htel[counter] = hwel.Document.Body.GetElementsByTagName("iframe") не возвращала никаких фреймов, всмысле каждый раз htel.Count был равен 0. Я продолжил копать в сторону HtmlWindow.Frames , и вот что получилось
0
|
8 / 8 / 4
Регистрация: 09.10.2015
Сообщений: 37
|
|
12.03.2016, 15:52 | 14 |
Тема более чем актуальна!
Помогите - подтолкните, куда копать? В хроме открываю через инструменты разработчика => Network => выбираю websocket => и во вкладке Frames смотрю на пробегающие данные.. Но как сделать просмотр программно, на C# WindowsForm?! Пробую представленные выше коды - не выходит
0
|
4 / 4 / 2
Регистрация: 08.06.2016
Сообщений: 15
|
||||||
11.11.2016, 23:35 | 15 | |||||
Я решил эту проблему при помощи совета krzdezda
Получение текущего HTML кода страницы из WebBrowser
0
|
11.11.2016, 23:35 | |
11.11.2016, 23:35 | |
Помогаю со студенческими работами здесь
15
Как достучаться до содержимого iframe? Автоматическая смена содержимого iframe Изменить размер iframe из кода содержимого Парсинг содержимого файла парсинг содержимого ячейки Загрузка содержимого и парсинг Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |