WebBrowser работа с контентом
И так, html страница была полностью загружена в control webBrowser, и теперь можно переходить к обработке полученных данных. Для этого можно использовать три основных свойства: DocumentStream, DocumentText и Document. Если Вы не знаете, как определить, момент полной загрузки страницы, то можете прочитать об этом в статье: Основные события контрола webBrowser
Основные свойства для работы с контентом
Пройденные этапы:

DocumentText
Данное свойство позволяет получить исходный код страницы в виде строки.
В качестве примера рассмотрим, как получить адрес ссылки.
Сначала добавим на форму один listBox, в который будут выводиться результаты работы, то есть все полученные адреса. Парсинг будет осуществляться при помощи регулярных выражений, для этого добавим строку:
using System.Text.RegularExpressions;
Весь код поместите в обработчике события DocumentCompleted
//Получаем исходный код страницы в виде строки
string htmlContent = webBrowser1.DocumentText;
//Если содержимого нет, то DocumentText == "".
if (htmlContent == "") return;
//Используя регулярные выражения, получаем все адреса ссылок.
Match match;
string hrefPattern = "href\\s*=\\s*(?:\"(?[^\"]*)\"|(?\\S+))";
match = Regex.Match(htmlContent, hrefPattern,
RegexOptions.IgnoreCase | RegexOptions.Compiled);
//Вывод результатов в listBox
while (match.Success)
{
listBox1.Items.Add(match.Groups[1]);
match = match.NextMatch();
} Результат:

Создание веб страницы
С помощью DocumentText так же можно создавать и свои собственные страницы, например:
Код поместите в обработчик события button.Click
//Создаем каркас страницы webBrowser1.DocumentText = "<html> <title>Новая страница</title> <body> <a href='http://test.local/test.html'>халява</a> </body> </html>";
Нажать кнопку отправить.
Результат:

Чтобы убедиться, в том, что была создана именно та html разметка, которая была задана, нажимаем правую кнопку мыши в окне элемента управления webBrowser и выбираем пункт: исходный код страницы, в браузере IE пункт называется: просмотр HTML-кода, как видно разметка совпадает. При этом стоит помнить, что физически данной страницы не существует, то есть файла, как например index.html, на диске нет.
DocumentStream
В отличие от свойства DocumentText, которое построчно считывает данные и возвращает их в виде одной строки, DocumentStream, работает с потоками.
Для примера, рассмотрим, как получить исходный код страницы и сохранить его в обычный текстовый файл.
Добавьте строку
using System.IO;
Код поместите в обработчик события DocumentComplete.
//Получение данных в виде потока
Stream stream = webBrowser1.DocumentStream;
//DocumentStream == null, если данные отсуствуют
if (stream == null) return;
//Запись в файл
using (StreamReader reader = new StreamReader(stream))
{
string result = reader.ReadToEnd();
//Сохраняем в файл
File.WriteAllText(@"C:\temp.txt", result);
}
} Результат:

Вывод исходного кода страницы в listBox
Если требуется, к примеру, не сохранять исходный код страницы, а просто вывести его, например в тот же listBox, то можно сделать так.
Stream htmlStream = webBrowser1.DocumentStream;
using(StreamReader strRead = new StreamReader(htmlStream))
{
string str;
while ((str = strRead.ReadLine()) != null)
{
listBox1.Items.Add(str);
}
} Результат:

О свойстве Document в следующей статье.
Читайте также: