Необходимо парсить страницу с использованием HtmlAgilityPack, но некоторые нужные поля загружаются из JS. Как загрузить страницу полностью после выполнения всех скриптов? К примеру, вот этот код получает данные которые есть в HTML без JS:
public string GetNumberOrders(string URL)
{
string result = "";
HtmlAgilityPack.HtmlDocument doc = new HtmlWeb().Load(URL);
doc.OptionFixNestedTags = true;
HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id='j-order-num']");
result += node.InnerHtml;
return result;
}
А вот так я пытаюсь вытянуть страницу с выполненным JS:
web1.ObjectForScripting = new MyScript();
web1.ScriptErrorsSuppressed = true;
web1.Navigate(URL);
waitTillLoad(web1);
web1.Document.InvokeScript("some_func");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)web1.Document.DomDocument;
StringReader sr = new StringReader(documentAsIHtmlDocument3.documentElement.outerHTML);
doc.Load(sr);
result = doc.DocumentNode.OuterHtml;
Поскольку названия функций неизвестны, их не получается выполнить через Document.InvokeScript(). Как выполнить все функции не используя InvokeScript?
UPD Решено:
webControl1.Source = new Uri(URL);
while(webControl1.IsLoading)
{
Application.DoEvents();
}
return webControl1.ExecuteJavascriptWithResult("document.documentElement.outerHTML").ToString();
Сам долго мучался используя стандартный webbrowser и парсеры типа HtmlAgilityPack. Советую выполнять через webdriver от selenium, в нем есть driver PhantomJS, позволяющий работать в фоне без лишних окон и с полной поддержкой javascript.
IWebDriver Driver=new PhantomJSDriver();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня в приложении, написанном на C# в Xamarin Studio имеется сервис, из которого нужно автоматически в нужный моент слать SMS на заданный номер с заданным...
Сейчас делаю небольшой проект с использованием MVC фреймворка Django на pythonВ любом MVC view представляется в виде какого-нибудь шаблонизатора
Доброго времени суток! Не могу разобраться как установить для поле значение по умолчанию в проекте aspnet mvc 4
Регистрация через внешние сервисы на localhost без SSL работаетКогда поставил сайт на хостинг, никакой сервис не работает