Buscar noticias con Python

Buscar noticias con Python en Google es muy sencillo aplicando la técnica web scraping, que hemos visto en otros artículos.

Este artículo va a consistir en desarrollar un programa que busque una palabra o conjunto de palabras en la sección de noticias de Google y que nos devuelva el resumen de los primeros resultados.

Por ejemplo, vamos a suponer que queremos buscar noticias sobre Python, pues realizaríamos esta búsqueda.

Instalación de los paquetes necesarios

Antes de ver cómo realizar un programa en Python que busqué noticias en Google, necesitamos instalar dos librerías. Una de ellas la hemos visto en otros artículos, Beautiful Soup, podéis ver cómo instalarla en este enlace.

La otra librería que necesitamos es requests, y la instalaremos de forma sencilla con el administrador de paquetes de Python, ejecutando el siguiente comando:

pip install requests

Con estos paquetes ya podemos meternos en materia de código 😏

Programa para buscar noticias con Python

Importar los paquetes

Lo primero que necesitamos hacer es importar las librerías que hemos instalado anteriormente, justo al principio de nuestro fichero.

import requests
from bs4 import BeautifulSoup

Crear función para obtener las noticias

Esta es la parte importante de nuestro programa, ya que es aquí donde estará obtención de las noticias, que retornaremos en forma de lista.

def get_news(search):
    try:
        # Creacion del enlace con la cadena que se quiere buscar
        url = 'https://www.google.com/search?q={0}&source=lnms&tbm=nws'.format(
            search)
        # Obtencion del HTML
        response = requests.get(url)
        soup = BeautifulSoup(response.text, "html.parser")
        # Obtencion de los elementos div con las noticias
        news_html = soup.find_all('div', class_='st')
        # Obtener solo el texto
        news = []
        for n in news_html:
            news.append(n.text)

        return news
    except Exception as e:
        print('Se ha producido un error: \n', e)

Como se puede observar se siguen una serie de pasos que están comentados en el código, pero vamos a ampliarlos a continuación:

  1. Creación del enlace: simplemente copiamos el enlace que genera Google al buscar noticias sobre una temática y lo que tenemos que introducir es la temática cada vez que llamemos la función. Lo haremos con el parámetro search y la función format, básicamente añadimos la búsqueda justo en {0}.
  2. Obtención del HTML: realizamos una petición HTTP y obtenemos el HTML a partir de ella.
  3. Obtenemos los elementos HTML: cuando ya tenemos el HTML necesitamos obtener las etiquetas con las noticias y para ello nos quedamos con las etiquetas div.
  4. Obtenemos el texto: a partir de las etiquetas obtenidas anteriormente nos quedamos solo con el texto, para mostrar las noticias de forma más visual.

Cabe destacar que no obtenemos las noticias al complemente, sino simplemente el resumen que nos ofrece Google al realizar la búsqueda directamente con nuestro navegador.

Usar la función para buscar noticias sobre cualquier temática

Un ejemplo básico del uso de la función sería el siguiente:

news = get_news('java')
for n in news:
    print(n,'\n')

Simplemente llamamos a la función get_news con la temática y guardamos los resultados en una variable que será una lista, porque eso retornaba nuestra función. Después de esto simplemente imprimimos los diferentes elementos.

Una forma un poco más útil sería pedir la temática que se quiere buscar por teclado, lo podemos ver en el siguiente código:

news = get_news(input('Introduzca la tematica \n> '))
for n in news:
    print(n,'\n')

Deja un comentario