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.

Raspado de páginas de categorías de Wikipedia usando Python.

Tengo esta página de categoría de Wikipedia: https://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Pi%C3%A8cedeth%C3%A9%C3%A2treduXVIIIe_si%C3%A8cle

Me gustaría abrir la página de cada obra listada (por ejemplo, https://fr.wikipedia.org/wiki/L%27Oiseau_vert) e imprimir la primera oración de la misma (por ejemplo, L’Oiseau vert (L’augellino belverde) est une comédie de Carlo Gozzi (auteur italien de pièces de théâtre) parue en 1765). También sería bueno tener un dataframe con el título de la obra en la primera columna y la primera oración en la segunda.

Intenté obtener todos los enlaces de las páginas a través de BeautifulSoup e imprimir las primeras oraciones con wikipedia.summary(), pero los resultados no son satisfactorios, ya que el módulo wikipedia a menudo redirige a los artículos equivocados. Parte del problema puede ser causado por los caracteres especiales en francés dentro de los títulos de las obras (é, â, etc.)

¿Existe un mejor método para acceder directamente a los artículos individuales desde la página de categoría?

Esta pregunta parece estar relacionada, pero no me ha ayudado más.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Extracción de artículos de teatro de Wikipedia

    Como experto en TI especializado en Python y web-scraping, aquí hay un método que sugiero para extraer los artículos individuales de una página de categoría de Wikipedia, como por ejemplo, https://fr.wikipedia.org/wiki/Catégorie:Pièce_de_théâtre_du_XVIIIe_siècle.

    Método

    1. Usar BeautifulSoup para obtener todos los enlaces a los artículos individuales de la página de categoría.
    2. Recorrer los enlaces y extraer los títulos de los artículos utilizando manipulación de cadenas (por ejemplo, rebanado).
    3. Utilizar los títulos de los artículos extraídos para construir las URL completas de cada página de Wikipedia de la obra de teatro.
    4. Utilizar el módulo wikipedia para extraer la primera frase de cada página de Wikipedia de la obra de teatro.
    5. Crear un dataframe de Pandas con el título de la obra de teatro en la primera columna y la primera frase en la segunda columna.

    Código

    Aquí hay un ejemplo de código que demuestra este método, así como cómo manejar los caracteres especiales del francés:

    import requests
    from bs4 import BeautifulSoup
    import wikipedia
    import pandas as pd
    
    # Definir la URL de la página de categoría
    url = 'https://fr.wikipedia.org/wiki/Catégorie:Pièce_de_théâtre_du_XVIIIe_siècle'
    
    # Realizar la solicitud y crear el objeto BeautifulSoup
    response = requests.get(url)
    soup = BeautifulSoup(response.content)
    
    # Encontrar todos los enlaces a las páginas de artículo individuales
    links = soup.find_all('a', {'class': 'mw-category-item'})
    
    # Recorrer los enlaces y extraer los títulos de los artículos
    articulos = []
    for link in links:
        articulo = link.text
        # Manejar los caracteres especiales del francés
        articulo = articulo.replace('é', 'é')
        articulo = articulo.replace('â', 'â')
        articulos.append(articulo)
    
    # Construir las URL completas para cada artículo y extraer la primera frase
    resumenes = []
    for articulo in articulos:
        # Construir la URL completa
        url_completa = wikipedia.page(articulo).url
        # Extraer la primera frase
        resumen = wikipedia.summary(articulo, sentences=1)
        resumenes.append(resumen)
    
    # Crear un dataframe con los resultados
    df = pd.DataFrame({'Título de la Obra': articulos,
                       'Primera Frase': resumenes})
    print(df.head())
    

    Este método debería ser capaz de extraer de manera precisa la primera frase de cada página de Wikipedia de una obra de teatro, a pesar de posibles redirecciones y caracteres especiales del francés.

Comments are closed.