HTML Анализ документа с помощью HtmlAgilityPack возвращает ноль - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь загрузить на сайт все, что находится между <code> тегами, к сожалению, выбирая узлы "//code" return null . Я не знаю почему. Это мой код:

 public void TAF_download()
        {
            var html = @"https://www.aviationweather.gov/taf/data?ids=KDEN&format=raw&metars=off&layout=off/";

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(html);
            var TAF = doc.DocumentNode.SelectSingleNode("//code");
            Console.WriteLine(TAF.OuterHtml);
        }

1 Ответ

0 голосов
/ 02 апреля 2020

Аргументом HtmlDocument.LoadHtml(string html) должен быть HTML, а не URL.

Вы можете попробовать это (без обработки исключений):

    public void TAF_download()
    {
        var url = @"https://www.aviationweather.gov/taf/data?ids=KDEN&format=raw&metars=off&layout=off/";

        string html;

        var request = WebRequest.CreateHttp(url);

        using (var response = request.GetResponse())
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            html = reader.ReadToEnd();
        }

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);
        var TAF = doc.DocumentNode.SelectSingleNode("//code");
        Console.WriteLine(TAF.OuterHtml);
    }

Существует также HtmlAgilityPack.HtmlWeb класс, который поддерживает загрузку URL, но я обычно не использую его сам (на самом деле я забыл об этом).

Например:

    public void TAF_download()
    {
        var url = @"https://www.aviationweather.gov/taf/data?ids=KDEN&format=raw&metars=off&layout=off/";

        HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();

        HtmlAgilityPack.HtmlDocument doc = web.Load(url);
        var TAF = doc.DocumentNode.SelectSingleNode("//code");
        Console.WriteLine(TAF.OuterHtml);
    }

Сказав это, вы следует искать лучший источник данных, который не требует очистки HTML ... возможно, один из вариантов, перечисленных здесь https://www.aviationweather.gov/dataserver

...