Raspado de HtmlAgilityPack: extracción de nodos específicos del documento html

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

Pregunta

Disculpe por adelantado si esto ya ha sido respondido (si es así, indíqueme la ubicación correcta), busqué aquí, web, youtube, etc. durante dos días y todavía no he encontrado una respuesta.

Me gustaría extraer algunos datos de la siguiente url: https://betcity.ru/en/results/sp_fl=a:46 ;

Estoy tratando de obtener todos los nombres de eventos del día (el primero es: Ho Kwan Kit / Wong Chun Ting - Fan Zhendong / Xu Xin y todos los demás después). Cuando inspecciono ese elemento puedo ver esta parte de html:

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

Estaba pensando en obtener todos los div's con class = "content-results-data__event" y luego obtener un texto interno de esos div's. Cada vez que ejecuto mi código obtengo cero resultados. ¿Por qué no obtengo nodos cuando puedo ver que existen divs con dicha clase y cómo puedo obtener todos los eventos (si aprendo cómo hacerlo, podría obtener otra información que necesito en este sitio)? Aquí está mi código (tengo que decir que soy bastante nuevo en esto).

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;");
    }
}

}

Respuesta aceptada

Aquí es cómo obtener el HTML para un día de coincidencias utilizando Selenium. El resto es HtmlAgilityPack. El sitio utiliza certificados autofirmados, por lo que tuve que configurar el controlador para aceptar certificados autofirmados. Que te diviertas.

        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);


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué