Скребок HtmlAgilityPack - извлечение определенных узлов из html-документа

c# html html-agility-pack web-scraping xpath

Вопрос

Извините заранее, если на это уже был дан ответ (если это так, пожалуйста, укажите мне правильное местоположение), я искал здесь, веб-сайт, youtube и т. Д. В течение двух дней и до сих пор не получил ответа.

Я хотел бы извлечь некоторые данные из следующего URL: https://betcity.ru/ru/results/sp_fl=a:46 ;

Я пытаюсь получить имена всех событий за день (1-е место: Ho Kwan Kit / Wong Chun Ting - Fan Zhendong / Xu Xin и все остальные после него). Когда я проверяю этот элемент, я вижу эту часть html:

<div class="content-results-data__event"><span>Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin</span></div>

Я думал получить все div с классом = «content-results-data__event» и получить внутренний текст от этих div. Каждый раз, когда я запускаю свой код, я получаю нулевые результаты. Почему я не получаю никаких узлов, когда вижу, что div с таким классом существует и как я могу получить все события (если я узнаю, как это сделать, я мог бы получить другую информацию, которая мне нужна с этого сайта). Вот мой код (должен сказать, что я довольно новичок в этом).

public partial class Scrapper : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<string> Events = new List<string>();
        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = NewMethod(web);
        var Nodes = doc.DocumentNode.SelectNodes(xpath: "//div[@class='content - results - data__event'']").ToList();

        foreach (var item in Nodes)
        {
            Events.Add(item.InnerText);
        }

        GridView1.DataSource = Events;
        GridView1.DataBind();


    }

    private static HtmlDocument NewMethod(HtmlAgilityPack.HtmlWeb web)
    {
        return web.Load("https://betcity.ru/en/results/sp_fl=a:46;");
    }
}

}

Принятый ответ

Вот как получить HTML за один день матчей, используя Selenium. Остальное - HtmlAgilityPack. Сайт использует самоподписанные сертификаты, поэтому мне пришлось настроить драйвер для приема самоподписанных сертификатов. Повеселись.

        var ffOptions = new FirefoxOptions();
        ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
        ffOptions.LogLevel = FirefoxDriverLogLevel.Default;
        ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true };
        var service = FirefoxDriverService.CreateDefaultService();
       var driver = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120));

        string url = "https://betcity.ru/en/results/date=2017-11-19;"; //remember to update the date accordingly.

        driver.Navigate().GoToUrl(url);
        Thread.Sleep(2000);
        Console.Write(driver.PageSource);



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему