Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/54: Рейтинг темы: голосов - 54, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 5

Получение текущего HTML кода страницы из WebBrowser

19.06.2014, 17:25. Показов 10939. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Получение текущего HTML кода страницы из webbrowser

Не поможете ли решить следующую проблему с webbrowser :
Мне нужно получать текущий код указанной страницы . Обычно с эти справляется webBrowser1.DocumentText .
Если мы открыли страницу (например google.ru), то в этот момент код страницы не составляет получить труда( спасибо webBrowser1.DocumentText). Но если мы ввели, какой то запрос в гугл, нажали «поиск», получили результаты. Затем пытаемся получить код этой страницы(с результатами поиска) , то получаем код старой страницы. Код новой не удается никак получить.
Обновление страницы(webBrowser1.Refresh()) и эксперименты с задержками не помогли.
Единственное что кое-как помогает это сохранение страницы при помощи диалога webBrowser1.ShowSaveAsDialog(), там мы получаем новый код страницы. Но здесь пользователю придется самому сохранять страницу.
Есть ли более элегантные и простые решения этой страницы?
Это мне нужно для того :
Пользователь открывает сайт в webbrowser, авторизуется на нем ,выставляет нужные параметры, и нажимает кнопку «обработать». Но чтобы работать нужно получить параметры, которые он выставил, а так получаем только код страницы без параметров.
Буду очень благодарен.
Сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// по 1 кнопке загружаем страницу        
private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("www.google.ru");
            webBrowser1.ScriptErrorsSuppressed = true  ; 
//создаем запрос в гугл, и получаем результаты         
 
        }
// по 2 кнопке получаем её код
private void button2_Click(object sender, EventArgs e)
{
              webBrowser1.Navigate("www.google.ru");
              webBrowser1.ScriptErrorsSuppressed = true;
 
              // Дожидаемся загрузки страницы
             while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
             {
                Application.DoEvents();
             }
            // Выводим содержимое в richTextBox1
            richTextBox1.Clear();
            richTextBox1.AppendText(webBrowser1.DocumentText);
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2014, 17:25
Ответы с готовыми решениями:

Получение html кода страницы webbrowser
Проблема заключается в том что когда программно пытаюсь получить html код HttpWebRequest request =...

При получение кода страницы сайта через WebBrowser страдает кодировка
Здравствуйте. Есть сайт с кодировкой koi8-r. При получение кода страницы сайта textBox1.Text =...

Получение исходного (html) кода страницы
Здравствуйте, хотел получить html код страницы http://telonko.com/ (не реклама), но сталкиваюсь с проблемой. Вот, собственно, сам код: ...

8
 Аватар для pipets24
9 / 9 / 4
Регистрация: 04.04.2012
Сообщений: 59
20.06.2014, 12:08
Цитата Сообщение от Serge555 Посмотреть сообщение
// по 2 кнопке получаем её код
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("www.google.ru");
webBrowser1.ScriptErrorsSuppressed = true;
Что-то я не пойму, зачем заново переходить на страницу гугла, если хотите получить код его выдачи? Быть может в этом вся проблема?
И еще
//создаем запрос в гугл, и получаем результаты

}
Кажется, ничего мы не создаём и уж тем более не получаем. Или просто код специально вырезали?
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
20.06.2014, 15:31
прочтите статью вот тут - это описание практически того что вам нужно, правда и использование другого компонента браузера, но идея и смысл тот же.
0
2 / 2 / 1
Регистрация: 03.12.2011
Сообщений: 10
21.06.2014, 00:07
Лучший ответ Сообщение было отмечено Serge555 как решение

Решение

Цитата Сообщение от pipets24 Посмотреть сообщение
Быть может в этом вся проблема?
Вряд ли. Код в DocumentText не изменяется, если какой-то элемент на странице изменять с помощью js.
Можно сохранять исходник так:
C#
1
2
3
4
5
6
7
8
9
10
11
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 );
}
Вот так все изменения, которые сделаны на странице скриптами, сохранятся.
2
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
21.06.2014, 04:17
Цитата Сообщение от Serge555 Посмотреть сообщение
Затем пытаемся получить код этой страницы(с результатами поиска) , то получаем код старой страницы. Код новой не удается никак получить.
Обновление страницы(webBrowser1.Refresh()) и эксперименты с задержками не помогли.
ибо надо выкинуть веббраузер, который жрет кучу ресурсов, и делать прямые запросы к сайту через webrequest. В гугле для поиска можно использовать обычный GET запрос, с параметром "q", который содержит поисковый запрос -
https://www.google.com/search?q=tralala
0
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 5
21.06.2014, 14:46  [ТС]
Цитата Сообщение от krzdezda Посмотреть сообщение
Вряд ли. Код в DocumentText не изменяется, если какой-то элемент на странице изменять с помощью js.
Можно сохранять исходник так:
C#
1
2
3
4
5
6
7
8
9
10
11
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 );
}
Вот так все изменения, которые сделаны на странице скриптами, сохранятся.
Ура, все работает! krzdezda правильно указал как нужно сделать. Спасибо.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
21.06.2014, 15:34
Цитата Сообщение от Serge555 Посмотреть сообщение
Ура, все работает! krzdezda правильно указал как нужно сделать. Спасибо.
сохранять на диске, а потом читать, вместо того, чтобы сделать прямой запрос?
0
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 5
21.06.2014, 16:42  [ТС]
Я не написал, в каком контексте это нужно, прошу прошения. Мне нужна была прога, в которой пользователь заходит на сайт, авторизуется, выставляет нужные параметры, а далее программа обрабатывает эти результаты. Т.к. была нужна на сайте авторизация, поэтому я и выбрал WebBrowser. Я сам пользуюсь GET запросами, это очень удобно, но WebBrowser, нет проблем с авторизацией. Пользователь один раз ввел логин/пароль, и он сохраняется.
Сейчас прога полностью работает. Всем спасибо за ответы.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
21.06.2014, 17:10
Цитата Сообщение от Serge555 Посмотреть сообщение
Пользователь один раз ввел логин/пароль, и он сохраняется.
это легко сделать, если сохранять куки в отдельном файле для пользователя. А потом при повторном заходе на сайт - эти куки добавлять к запросу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2014, 17:10
Помогаю со студенческими работами здесь

Получение html кода страницы
Здраствуйте, как получать через webBrowser код я знаю, а можно обойтись как нибудь без него, чтоб в коде переходил на сайт и проделывал...

Получение html кода страницы в listbox
Вот что получилось: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Авторизация на сайте и получение html кода страницы
Доброго всем времени суток! У меня возникла одна проблема в написании кода. Может, кто-то сможет мне помочь? Имеется сайт,...

Правильное получение Html кода страницы и определение ее кодировки в одном запросе
Здравствуйте, Сегодня решил снова поднять вопрос о работе с интернет страницами. Я знаю, что в интернете полно ответов на вопрос о том,...

WebBrowser. Как получить Html код страницы открытой в "webBrowser" в правильной кодировке?
Пробую получить Html код страницы открытой в "webBrowser". public string GetHTMLCodPage() { string htmlCodPage; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru