Как я могу очистить таблицу, созданную с помощью JavaScript в C # - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь получить таблицу с веб-страницы https://www.belastingdienst.nl/rekenhulpen/wisselkoersen/, используя HtmlAgilityPack.

Пока мой код

WebClient webClient = new WebClient();
        string page = webClient.DownloadString("https://www.belastingdienst.nl/rekenhulpen/wisselkoersen/");

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(page);

        List<List<string>> table = doc.DocumentNode.SelectSingleNode("//table[@class='list_result Result']")
                    .Descendants("tr")
                    .Skip(1)
                    .Where(tr => tr.Elements("td").Count() > 1)
                    .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
                    .ToList();

Моя проблема в том, что веб-страница создаеттаблица с использованием JavaScript, и когда я пытаюсь прочитать ее, она выдает пустое исключение, потому что веб-страница показывает, что я должен включить JavaScript.

Я также пытался использовать метод "GET"

 string Url = "https://www.belastingdienst.nl/rekenhulpen/wisselkoersen/";
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(Url);
myRequest.Method = "GET";
            WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
            myResponse.Close();

с такими же результатами.Я уже включил JavaScript в Internet Explorer и также изменил реестр

if (Environment.Is64BitOperatingSystem)
        Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);
    else  //For 32 bit machine
        Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);

Если я использую компонент WebBrowser, я могу видеть веб-страницу без проблем, но я все еще не могу получить таблицу в список.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

WebClient - это http-клиент, а не веб-браузер, поэтому он не будет выполнять JavaScript.Что нужно, так это веб-браузер без головы .Смотрите эту страницу для списка безголовых веб-браузеров.Я не пробовал ни одного из них, поэтому не могу дать вам рекомендации:

Безголовый браузер для C # (.NET)?

0 голосов
/ 24 июня 2018

F12 - ваш друг в любом браузере.

Выберите вкладку Сеть, и вы заметите, что вся информация находится в этом файле:

https://www.belastingdienst.nl/data/douane_wisselkoersen/wks.douane.wisselkoersen.dd201806.xml

(я полагаю, что данные за июль 2018 года будут храниться в URL-адресе с именем * .dd201807.xml)

Используя C #, вам нужно будет выполнить GET для этого URL и проанализировать его как XML, не нужно использовать HtmlAgilityPack. Чтобы подобрать правильный URL-адрес, вам нужно составить текущий год, объединенный с текущим месяцем.

Leuker kan ik het niet maken!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...