Antes de lanzarte a escribir el código, tienes que cumplir unos cuantos requisitos previos. Se trata de unos requisitos muy básicos, que pueden hacer más fácil y eficaz el uso de Python.
Todo el código está escrito en Jupyter Notebook, un popular IDE de Python para esta guía. Además, el sitio web de noticias de India Today está codificado dentro del código de ejemplo.
Para descargar Jupyter Notebook, puedes utilizarlo como parte del paquete anaconda, o descargar una versión independiente en tu sistema.
Descarga: Anaconda | Jupyter Notebook
Sin más preámbulos, vamos a profundizar en el código.
Para empezar, necesitas importar unas cuantas bibliotecas de Python, cada una de las cuales sirve para diferentes propósitos.
import win32com.client as wincl
from urllib.request import urlopen as ureq
from bs4 import BeautifulSoup as soup
sp = wincl.Dispatch("SAPI.spVoice")
Dónde:
Este código sólo funcionará en Windows, ya que llamarás a la biblioteca win32.com.client.
A continuación, tienes que definir la URL (enlace) del sitio web dentro del url que se almacena en la memoria de Python.
url = https://www.indiatoday.in/top-stories
Crea una nueva variable cliente para almacenar el comando de apertura de la URL.
client = ureq(url)
print(client)
donde:
Ya que has abierto la URL en la memoria, es el momento de comprobar si el sitio web en cuestión permite conexiones no seguras a través de Python. Puedes imprimir la variable del cliente y comprobar el resultado.
Hay dos posibilidades con el comando print:
Una vez que hayas definido la URL del sitio web de noticias dentro del comando URL, es el momento de importar el código HTML a una variable.
page_html = client.read()
print(page_html)
Debes imprimir el código HTML del sitio web importado a Python como paso de precaución. Incluso puedes hacer coincidir este código con el código del sitio web disponible en el Inspeccionar opción.
Antes de convertir el código, debes cerrar el sitio web de la memoria de Python utilizando el comando close.
client.close()
Como tienes el código HTML importado en una variable de Python, necesitas convertirlo en un formato legible para Python para aplicar el encontrar y findall comandos para buscar palabras clave.
Puedes pasar el siguiente comando para convertir el código HTML:
page_soup = soup(page_html , "html.parser")
Donde:
Una vez que el código está listo para su uso, es el momento de examinar el código HTML del sitio web para empezar a buscar las palabras clave de los titulares.
Para ello, haz clic con el botón derecho del ratón en cualquier parte del sitio web y haz clic en Inspeccionar. Esto abrirá el código HTML del sitio web en cuestión.
En la ventana de código del sitio web, desplázate hasta localizar las etiquetas contenedoras que almacenan los titulares.
Están contenidas dentro de la etiqueta ver-contenido en el sitio web de India Today. Los contenedores de cada sitio web de noticias varían, pero deberías poder navegar por el código con relativa facilidad.
articles = page_soup.find("div" , { "class" : "view-content" })
Por último, tienes que capturar las sub-etiquetas, que contienen los titulares principales que Python te leerá.
articles = articles.findAll("div" , {"class" : "catagory-listing"})
El contenedor view-content contendrá varios titulares, la envoltura exterior de tus titulares.
Para capturar las etiquetas H2 y los fragmentos que aparecen con cada titular, tienes que ejecutar un bucle.
i = 1
for x in articles:
title = x.find("h2").text
para = x.find("p").text
print(i , title , "
" , "
" , para , "
" , "
")
sp.Speak(title)
sp.Speak(para)
i=i+1
Donde:
Cada vez que ejecutes el código, se descargarán nuevos titulares del sitio web de noticias antes de ser leídos en voz alta. Python ejecuta el código cada vez que ejecutas el conjunto de códigos, manteniéndote así actualizado con los cambios en el sitio web.
Los titulares más antiguos seguirán siendo mostrados y leídos por Python hasta que actualices y vuelvas a ejecutar el código.
Python, como lenguaje de código abierto, ofrece una serie de herramientas -como Beautiful Soup, Selenium y otros frameworks- tanto para principiantes como para usuarios avanzados.
Si quieres recibir tus noticias diarias por voz, Python te lo pone fácil. Aprender este lenguaje en particular también puede ayudarte a convertirte en un mejor programador en todos los ámbitos.