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.

Recuperar todas las cadenas de una página web en Python.

Estoy intentando recuperar todas las cadenas de una página web utilizando BeautifulSoup y devolver una lista de todas las cadenas recuperadas.

Tengo 2 enfoques en mente:

  1. Encontrar todos los elementos que tienen un texto que no es nulo, agregar el texto a la lista de resultados y devolverla. Estoy teniendo dificultades para implementar esto ya que no pude encontrar ninguna manera de hacerlo en BeautifulSoup.

  2. Utilizar el método “findall” de BeautifulSoup para encontrar todos los atributos que estoy buscando, como “p” para párrafos, “a” para enlaces, etc. El problema al que me enfrento con este enfoque es que por alguna razón, findall está devolviendo una salida duplicada. Por ejemplo, si un sitio web tiene un enlace con un texto “Consiga trabajo”, estoy recibiendo “Consiga trabajo” más de una vez en la salida.

Honestamente, no estoy seguro de cómo proceder desde aquí y he estado atascado durante varias horas tratando de averiguar cómo obtener todas las cadenas de una página web.

Realmente apreciaría su ayuda.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como un experto en Python y BeautifulSoup, hay varias formas de recuperar todas las cadenas de una página web y devolver una lista de todas las cadenas recuperadas.

    Una forma es utilizar el método find_all para encontrar todos los elementos HTML con contenido de texto, y luego utilizar el método get_text () para extraer el contenido de texto de los elementos. Este enfoque se puede lograr con el siguiente código:

    from bs4 import BeautifulSoup
    import requests
    
    # Obtenga el contenido de la página web
    url = "https://example.com"
    response = requests.get(url)
    html_content = response.content
    
    # Analice el contenido HTML con BeautifulSoup
    soup = BeautifulSoup(html_content, "html.parser")
    
    # Encuentre todos los elementos HTML con contenido de texto
    text_elements = soup.find_all(text=True)
    
    # Extraiga el contenido de texto de los elementos y filtre las cadenas vacías
    text_list = [element.strip() for element in text_elements if element.strip()]
    
    # Imprima la lista de cadenas recuperadas
    print(text_list)
    

    Otra forma es utilizar el generador strings para extraer todas las cadenas de texto del HTML sin incluir las etiquetas. Este enfoque se puede lograr con el siguiente código:

    from bs4 import BeautifulSoup
    import requests
    
    # Obtenga el contenido de la página web
    url = "https://example.com"
    response = requests.get(url)
    html_content = response.content
    
    # Analice el contenido HTML con BeautifulSoup
    soup = BeautifulSoup(html_content, "html.parser")
    
    # Extraiga todas las cadenas de texto del HTML
    text_list = [string.strip() for string in soup.strings if string.strip()]
    
    # Imprima la lista de cadenas recuperadas
    print(text_list)
    

    Cualquiera de estos enfoques debería funcionar y recuperar todo el contenido de texto de la página web. ¡Espero que esto ayude!

Comments are closed.