Получить исходный HTML-код определенной веб-страницы после загрузки javascript [duplicate]

.then функция promB получает то, что возвращается из функции .then из обещания.

здесь sacA возвращается, это число, которое будет доступно как параметр number в функции успеха promB , который затем будет увеличен на 1

9
задан bjb568 10 June 2014 в 05:47
поделиться

2 ответа

Когда вы делаете WebRequest, вы просите сервер предоставить вам файл с образцом, содержимое этого файла еще не было разобрано / выполнено веб-браузером, и поэтому javascript на нем еще ничего не сделал.

Вам нужно использовать инструмент для выполнения JavaScript на странице, если вы хотите увидеть, как выглядит страница после анализа в браузере. Один из вариантов - использование встроенного веб-браузера .net: http://msdn.microsoft.com/en-au/library/aa752040 (v = vs.85) .aspx

Элемент управления веб-браузером может перемещаться и загружать страницу, а затем вы можете запросить его DOM, который будет изменен JavaScript на странице.

EDIT (пример):

Uri uri = new Uri("http://www.somewebsite.com/somepage.htm");

webBrowserControl.AllowNavigation = true;
// optional but I use this because it stops javascript errors breaking your scraper
webBrowserControl.ScriptErrorsSuppressed = true;
// you want to start scraping after the document is finished loading so do it in the function you pass to this handler
webBrowserControl.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserControl_DocumentCompleted);
webBrowserControl.Navigate(uri);

private void webBrowserControl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElementCollection divs = webBrowserControl.Document.GetElementsByTagName("div");

    foreach (HtmlElement div in divs)
    {
        //do something
    }
}
10
ответ дан Pandepic 22 August 2018 в 16:25
поделиться
  • 1
    Большое спасибо. Не могли бы вы дать несколько советов о том, какие методы / функции в управлении веб-браузером мне понадобятся (для навигации, загрузки и запроса)? Еще раз спасибо. :) – user3213711 10 June 2014 в 20:34
  • 2
    Я отредактировал свой ответ, чтобы включить пример. – Pandepic 12 June 2014 в 04:01
  • 3
    Есть ли способ использовать WebBrowser в программе, отличной от UI? Мне нужно проанализировать веб-страницу, которая частично сгенерирована javascript, но мне не нужен интерфейс. – Spook 3 February 2015 в 11:04
  • 4
    Привет, Пандепик, есть ли способ сделать это в MVC? Я знаю, что могу использовать iframes, но многие сайты не разрешают перекрестку. – Kadaj 17 January 2017 в 17:11
  • 5
    Есть ли способ, который я могу сделать только из консольного приложения? – Rakesh Yadav 8 June 2017 в 02:28

Вы можете взглянуть на такой инструмент, как Selenium, на соскабливание страниц с Javascript.

http://www.andykelk.net/tech/headless-browser-testing-with-phantomjs-selenium-webdriver-c-nunit-and-mono

4
ответ дан vikramsk 22 August 2018 в 16:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: