Элемент управления C # Webbrowser, несоответствие между отображаемым содержимым и Document.innerHtml - PullRequest
0 голосов
/ 09 марта 2019

Итак, у меня есть веб-сайт, который я загружаю в веб-браузер моей формы.После загрузки документа я получаю файл webbrowser.documenttext.Я ищу здесь, чтобы разобрать конкретную таблицу.Но я не нахожу здесь таблицу, но вижу, что она отображается в браузере форм.

Я говорю вам, что эта конкретная таблица загружается / добавляется в документ с помощью уже загруженного кода JavaScript.Когда я щелкаю правой кнопкой мыши и выбираю «View Source», он выводит документ с правильным html.

Мой вопрос заключается в том, как я могу получить тот же документ, на который ссылается ViewSource, или есть какой-нибудь способ получить документ, который являетсяотображается в форме?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Аналогичный существующий вопрос

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

На самом деле я не реализовал код, указанный в ответе, но изменил событие documentCompleted на асинхронное и предоставил задержку задачи ожидания 5 с

private async void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        await Task.Delay(5000);
        var html= wb.Document.GetElementsByTagName("HTML")[0].OuterHtml;
    }

Теперь я получаю динамический результат. Спасибо, я чувствую себя сейчас.

0 голосов
/ 09 марта 2019

Вместо использования Webbrowser Control используйте HtmlAgilityPackage для анализа данных в зависимости от ваших потребностей.

 var html = new HtmlDocument();
html.LoadHtml(new WebClient().DownloadString("http://www.asp.net")); 
var root = html.DocumentNode;
var commonPosts = root.Descendants().Where(n => n.GetAttributeValue("class", 
"").Equals("common-post"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...