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.

Go Colly no está devolviendo ningún dato del sitio web

Estoy tratando de hacer un scraper web simple en Go y no puedo obtener la funcionalidad más básica de colly. Tomé el ejemplo básico de la documentación de colly y, aunque funcionó con el sitio hackernews.org que usaron, no está funcionando con el sitio que estoy tratando de raspar. Intenté varias iteraciones de la URL, es decir, con https://, www., con / al final, etc., y nada parece funcionar. Intenté raspar el mismo sitio con beautiful soup en python y obtuve todo, así que sé que el sitio se puede raspar. Cualquier ayuda es apreciada. Gracias.

package main

import (
    "fmt"

    "github.com/gocolly/colly"
)

// función principal
func main() {
    /* instanciar colly */
    c := colly.NewCollector(
        colly.AllowedDomains("www.bjjheroes.com/"),
    )

    // En cada elemento "a" que tenga el atributo href, llamar a la función de devolución de llamada
    c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        fmt.Printf("Encontrado enlace: %q \n", e.Text)
    })

    c.Visit("www.bjjheroes.com/a-z-bjj-fighters-list")
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando crear un web scraper utilizando colly en go, pero estás teniendo problemas al raspar el sitio web deseado. El código que has proporcionado configura un nuevo colector de colly con el dominio permitido “www.bjjheroes.com/” y luego busca todos los elementos HTML con el atributo href, llamando a un callback para cada elemento encontrado que imprime el valor de texto del elemento.

    Una cosa que podría estar causando problemas es el formato de la URL que estás intentando raspar. Se recomienda incluir el protocolo HTTP o HTTPS en la URL, así que intenta cambiar la línea c.Visit("www.bjjheroes.com/a-z-bjj-fighters-list") por c.Visit("https://www.bjjheroes.com/a-z-bjj-fighters-list").

    También es posible que haya problemas con el archivo robots.txt del sitio web o la configuración del servidor que podrían estar bloqueando tu scraper. Puedes intentar configurar algunas opciones adicionales en tu colector de colly, como configurar un agente de usuario, seguir redireccionamientos o ignorar errores de SSL.

    Aquí tienes un ejemplo de configurar algunas opciones adicionales para el colector de colly:

    package main
    
    import (
        "fmt"
    
        "github.com/gocolly/colly"
    )
    
    func main() {
        // Instantiar colly con algunas opciones
        c := colly.NewCollector(
            colly.AllowedDomains("www.bjjheroes.com"),
            colly.UserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"),
            colly.IgnoreRobotsTxt(),
            colly.MaxDepth(2),
        )
    
        // En cada elemento a que tenga el atributo href, llamar al callback
        c.OnHTML("a[href]", func(e *colly.HTMLElement) {
            fmt.Printf("Enlace encontrado: %s\n", e.Attr("href"))
        })
    
        c.Visit("https://www.bjjheroes.com/a-z-bjj-fighters-list")
    }
    

    En este ejemplo, configuramos una cadena de agente de usuario para simular un navegador web, ignoramos el archivo robots.txt del sitio web y limitamos la profundidad máxima de los enlaces a seguir a 2.

    ¡Espero que esto te ayude con tu proyecto de web scraping!

Comments are closed.