¿Cómo extraer datos de Wikipedia en Python?

En este artículo, aprenderemos cómo extraer datos de Wikipedia usando Python. Aquí usamos dos métodos para extraer datos.

Método 1: Usando el módulo de Wikipedia

En este método, utilizaremos el módulo de Wikipedia para extraer datos. Wikipedia es una enciclopedia en línea multilingüe creada y mantenida como un proyecto de colaboración abierta por una comunidad de editores voluntarios que utilizan un sistema de edición basado en wiki.

Para la instalación, ejecute este comando en su terminal.

pip install wikipedia

Datos de Wikipedia, se extraerán aquí: –

  • resumen, titulo
  • Contenido de página
  • Obtenga la lista de la fuente de la imagen y la URL de la página
  • Diferentes categorías

Extraiga los datos uno por uno:

1. Extrayendo resumen y página

Sintaxis: wikipedia.summary(“Introducir consulta”)
 

wikipedia.page(“Ingresar Consulta”).title

Python3

import wikipedia
 
 
wikipedia.summary("Python (programming language)")

Producción:

2. Contenido de la página: 

Para extraer el contenido de un artículo, utilizaremos el método page() y la propiedad de contenido para obtener los datos reales.

Sintaxis: wikipedia.page(“Introducir consulta”).content

Python3

wikipedia.page("Python (programming language)").content

Producción:

3. Extraiga imágenes de Wikipedia.

Sintaxis: wikipedia.page(“Introducir consulta”).images

Python3

wikipedia.page("Python (programming language)").images

Producción: 

4. extraiga la URL de la página actual: 

Use el método page() y la propiedad url

Sintaxis: wikipedia.page(“Introducir consulta”).url

Python3

wikipedia.page('"Hello, World!" program').url

Producción: 

'https://en.wikipedia.org/wiki/%22Hello,_World!%22_program'

5. Obtenga la lista de categorías de artículos.

Utilice el método page() y la propiedad de categorías

Sintaxis: wikipedia.page(“Introducir consulta”).categories

Python3

wikipedia.page('"Hello, World!" program').categories

Producción: 

['Articles with example code',
 'Articles with short description',
 'Commons category link is on Wikidata',
 'Computer programming folklore',
 'Short description is different from Wikidata',
 'Test items in computer languages',
 'Webarchive template wayback links']

6. Obtenga la lista de todos los enlaces a un artículo 

Sintaxis: wikipedia.page(“Introducir consulta”).links

Python3

wikipedia.page('"Hello, World!" program').links

Producción: 

7. Obtenga datos en diferentes idiomas.

Ahora veremos la conversión de idioma, para convertir a otro idioma usaremos el método set_lang()

Sintaxis: wikipedia.set_lang(“Ingrese el tipo de idioma”)

Python3

wikipedia.set_lang("hi")
wikipedia.summary('"Hello, World!" program')

Producción:
 

Método 2: Uso de requests , BeautifulSoup

En este método, utilizaremos Web Scraping.

Para raspar en Python usaremos dos módulos:

  • bs4: Beautiful Soup (bs4) es una biblioteca de Python para extraer datos de archivos HTML y XML. Este módulo no viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install bs4
  • requests: las requests le permiten enviar requests HTTP/1.1 de forma extremadamente sencilla. Este módulo tampoco viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install requests

Los datos serán extraídos:- 

  • Párrafos
  • Imágenes
  • Lista de Imágenes
  • encabezados
  • Contenido no deseado (Contenido restante)

Acercarse: 

  • Obtener código HTML
  • Desde el código HTML, obtenga el contenido de la etiqueta del cuerpo interior
  • Iterar 

Python3

# Import Module
from bs4 import *
import requests
 
# Given URL
url = "https://en.wikipedia.org/wiki/Beautiful_Soup_(HTML_parser)"
 
# Fetch URL Content
r = requests.get(url)
 
# Get body content
soup = BeautifulSoup(r.text,'html.parser').select('body')[0]
 
# Initialize variable
paragraphs = []
images = []
link = []
heading = []
remaining_content = []
 
# Iterate through all tags
for tag in soup.find_all():
     
    # Check each tag name
    # For Paragraph use p tag
    if tag.name=="p":
       
        # use text for fetch the content inside p tag
        paragraphs.append(tag.text)
         
    # For Image use img tag
    elif tag.name=="img":
       
        # Add url and Image source URL
        images.append(url+tag['src'])
         
    # For Anchor use a tag
    elif tag.name=="a":
       
        # convert into string and then check href
        # available in tag or not
        if "href" in str(tag):
           
          # In href, there might be possible url is not there
          # if url is not there
            if "https://en.wikipedia.org/w/" not in str(tag['href']):
                link.append(url+tag['href'])
            else:
                link.append(tag['href'])
                 
    # Similarly check for heading
    # Six types of heading are there (H1, H2, H3, H4, H5, H6)
    # check each tag and fetch text
    elif "h" in tag.name:
        if "h1"==tag.name:
            heading.append(tag.text)
        elif "h2"==tag.name:
            heading.append(tag.text)
        elif "h3"==tag.name:
            heading.append(tag.text)
        elif "h4"==tag.name:
            heading.append(tag.text)
        elif "h5"==tag.name:
            heading.append(tag.text)
        else:
            heading.append(tag.text)
             
    # Remain content will store here
    else:
        remaining_content.append(tag.text)
         
print(paragraphs, images, link, heading, remaining_content)
  •  contenido del cuerpo y obtener los datos anteriores

A continuación se muestra la implementación completa: 

Python3

# Import Module
from bs4 import *
import requests
 
# Given URL
url = "https://en.wikipedia.org/wiki/Beautiful_Soup_(HTML_parser)"
 
# Fetch URL Content
r = requests.get(url)
 
# Get body content
soup = BeautifulSoup(r.text,'html.parser').select('body')[0]
 
# Initialize variable
paragraphs = []
images = []
link = []
heading = []
remaining_content = []
 
# Iterate through all tags
for tag in soup.find_all():
     
    # Check each tag name
    # For Paragraph use p tag
    if tag.name=="p":
       
        # use text for fetch the content inside p tag
        paragraphs.append(tag.text)
         
    # For Image use img tag
    elif tag.name=="img":
       
        # Add url and Image source URL
        images.append(url+tag['src'])
         
    # For Anchor use a tag
    elif tag.name=="a":
       
        # convert into string and then check href
        # available in tag or not
        if "href" in str(tag):
           
          # In href, there might be possible url is not there
          # if url is not there
            if "https://en.wikipedia.org/w/" not in str(tag['href']):
                link.append(url+tag['href'])
            else:
                link.append(tag['href'])
                 
    # Similarly check for heading
    # Six types of heading are there (H1, H2, H3, H4, H5, H6)
    # check each tag and fetch text
    elif "h" in tag.name:
        if "h1"==tag.name:
            heading.append(tag.text)
        elif "h2"==tag.name:
            heading.append(tag.text)
        elif "h3"==tag.name:
            heading.append(tag.text)
        elif "h4"==tag.name:
            heading.append(tag.text)
        elif "h5"==tag.name:
            heading.append(tag.text)
        else:
            heading.append(tag.text)
             
    # Remain content will store here
    else:
        remaining_content.append(tag.text)
         
print(paragraphs, images, link, heading, remaining_content)

Ejemplo: 

Publicación traducida automáticamente

Artículo escrito por abhigoya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *