Как динамически генерировать HTML-код, используя .NET WebBrowser или mshtml.HTMLDocument?

Большинство ответов, которые я прочитал относительно этой темы, указывают либо на класс System.Windows.Forms.WebBrowser, либо на интерфейс COM mshtml.HTMLDocument из сборки библиотеки объектов Microsoft HTML.

Класс WebBrowser никуда меня не привел. Следующий код не может получить HTML-код, отображаемый моим веб-браузером:

[STAThread]
public static void Main()
{
    WebBrowser wb = new WebBrowser();
    wb.Navigate("https://www.google.com/#q=where+am+i");

    wb.DocumentCompleted += delegate(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)wb.Document.DomDocument;
        foreach (IHTMLElement element in doc.all)
        {
                    System.Diagnostics.Debug.WriteLine(element.outerHTML);
        }     
    };
    Form f = new Form();
    f.Controls.Add(wb);
    Application.Run(f);
} 

Выше приведен только пример. Я'Я не очень заинтересован в поиске обходного пути для определения названия города, где я нахожусь. Мне просто нужно понять, как программно получать такие динамически сгенерированные данные.

(Вызовите новый System.Net.WebClient.DownloadString ("https://www.google.com/#q=where+am+i»), сохраните полученный текст где-нибудь, найдите название города, где вы сейчас находитесь, и дайте мне знать, если вы смогли его найти.)

Но все же, когда я получаю доступhttps://www.google.com/#q=where+am+i» из моего веб-браузера (например, или firefox) я вижу название моего города, написанное на веб-странице. В Firefox, если я нажму правой кнопкой мыши на название города и выберу "Осмотреть Элемент (Q) Я ясно вижу название города, написанное в HTML-коде, которое выглядит совсем не так, как необработанный HTML-код, возвращаемый WebClient.

После того, как я устал играть в System.Net.WebBrowser, я решил попробовать mshtml.HTMLDocument, чтобы в итоге получить тот же бесполезный необработанный HTML:

public static void Main()
{
    mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)new mshtml.HTMLDocument();
    doc.write(new System.Net.WebClient().DownloadString("https://www.google.com/#q=where+am+i"));

    foreach (IHTMLElement e in doc.all)
    {
            System.Diagnostics.Debug.WriteLine(e.outerHTML);
    }
} 

Я полагаю, что должен быть элегантный способ получить такую информацию. Сейчас все, о чем я могу думать, это добавить элемент управления WebBrowser в форму, перевести его на указанный URL-адрес и отправить ключи. "CLRL, A "и скопируйте все, что происходит на странице, в буфер обмена и попытайтесь проанализировать его. Тот'Хотя это ужасное решение.

Ответы на вопрос(2)

Ваш ответ на вопрос