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.

Jsoup no funciona para raspar enlaces en algunos sitios web.

He estado trabajando en un proyecto reciente que implica extraer productos específicos de sitios web y reportar el estado de disponibilidad (tarjetas gráficas, por si alguien lo pregunta). Usando JSOUP, he estado haciendo esto pasando por las páginas de listado de productos, extrayendo todos los enlaces y filtrando los enlaces apropiados. Para algunos sitios web, mi código funciona perfectamente bien, pero para otros, algunos o incluso ninguno de los enlaces son extraídos por mi código.

Ejemplo funcionando:
1. https://www.bhphotovideo.com/c/buy/Graphic-Cards/ci/6567

Ejemplos que no funcionan:
1) https://www.bestbuy.com/site/computer-cards-components/video-graphics-cards/abcat0507002.c?id=abcat0507002
2) https://www.evga.com/products/productlist.aspx?type=0

Aquí está el fragmento de código encargado de extraer los enlaces:

public class LinkScrapeLite {

public static void main(String[] args) {
    try {

        Document doc = Jsoup.connect("https://www.evga.com/products/productlist.aspx?type=0").get(); // Evga no me da ninguna salida en absoluto

        String title = doc.title();
        System.out.println("title: " + title);

        Elements links = doc.select("a[href]");
        for (Element link : links) {
            // obtener el valor del atributo href
            System.out.println("nlink: " + link.attr("href"));
            System.out.println("text: " + link.text());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Entiendo que lo que estoy haciendo no es eficiente de ninguna manera, así que si alguien tiene alguna sugerencia de cómo podría hacer esto de una mejor manera, por favor házmelo saber 🙂

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con los ejemplos que no funcionan puede estar relacionado con la forma en que está estructurado el sitio web y las etiquetas utilizadas para los enlaces. Es posible que los enlaces estén anidados dentro de múltiples capas de divs y otras etiquetas, lo que dificulta que JSOUP identifique los enlaces apropiados.

    Una forma de mejorar potencialmente el código es utilizar selectores más específicos al buscar los enlaces, como dirigirse a clases específicas o atributos de datos únicos para los enlaces del producto. Además, puede ser útil inspeccionar la estructura HTML de los sitios web que no funcionan y ver si hay algún patrón que se pueda utilizar para apuntar mejor a los enlaces.

    Otro enfoque a considerar es utilizar una API, si está disponible, en lugar de hacer web scraping. Esto probablemente sería más confiable y eficiente para obtener los datos necesarios. Sin embargo, no siempre es una opción dependiendo del sitio web y la disponibilidad de APIs.

Comments are closed.