es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar datos después de hacer clic en un botón en PuppeteerSharp C#

No puedo extraer datos después de hacer clic en el botón en PuppeteerSharp C#.

Aquí está mi código en Puppeteer C#:

string url = "https://www.google.com";
var response = await page.GoToAsync(url, new NavigationOptions
{
   Timeout = 0,
   WaitUntil = waitUntil
});
if (response.Status == HttpStatusCode.OK)
{
  await page.TypeAsync("input[name=q]", "Mukarram Javid Github");
  await page.Keyboard.PressAsync("Enter");
}

await page.WaitForNavigationAsync();

var content = await page.EvaluateExpressionAsync("document.querySelector('#res')");

No obtuve ningún dato en content. ¿Alguien puede ayudarme con esta solución?

Quiero extraer el siguiente contenido – ver la captura de pantalla.

Saludos,

Imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el contenido que estás intentando extraer se genera dinámicamente después de hacer clic en el botón de búsqueda. Por lo tanto, necesitas esperar a que el contenido se cargue antes de intentar extraerlo. Una forma de hacer esto es utilizando el método page.WaitForSelectorAsync para esperar a que aparezca un selector específico en la página.

    Aquí está el código modificado:

    string url = $"https://www.google.com";
    var response = await page.GoToAsync(url, new NavigationOptions
    {
       Timeout = 0,
       WaitUntil = waitUntil
    });
    if (response.Status == HttpStatusCode.OK)
    {
      await page.TypeAsync("input[name=q]", "Mukarram Javid Github");
      await page.Keyboard.PressAsync("Enter");
    
      await page.WaitForNavigationAsync();
    
      // Esperar a que se carguen los resultados de búsqueda
      await page.WaitForSelectorAsync("#search");
    
      // Obtener el contenido de los resultados de búsqueda
      var content = await page.EvaluateExpressionAsync("document.querySelector('#search').innerHTML");
    }
    
    

    En este código, estamos esperando a que aparezca el selector #search en la página antes de extraer su contenido. Utilizamos el método page.EvaluateExpressionAsync para obtener el innerHTML del elemento #search.

    ¡Espero que esto te sea útil!

Comments are closed.