En este artículo vamos a ver cómo obtener noticias diarias usando Python. Aquí usaremos Beautiful Soup y el módulo de solicitud para raspar los datos.
Módulos necesarios
- 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 : Request le permite enviar requests HTTP/1.1 de manera extremadamente fácil. Este módulo tampoco viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install requests
Implementación paso a paso:
Paso 1: en primer lugar, asegúrese de importar estas bibliotecas.
Python3
import requests from bs4 import BeautifulSoup
Paso 2: luego, para obtener el contenido HTML de https://www.bbc.com/news, agregue estas 2 líneas de código:
Python3
url='https://www.bbc.com/news' response = requests.get(url)
Paso 3: obtener una etiqueta HTML específica
Para encontrar las etiquetas HTML en las que se encuentran los titulares de las noticias, diríjase a https://www.bbc.com/news e inspeccione un titular de noticias haciendo clic con el botón derecho en él y haciendo clic en «inspeccionar»:
Verá que todos los titulares están contenidos dentro de las etiquetas “<h3>”. Por lo tanto, para borrar todas las etiquetas “<h3>” dentro de esta página web, agregue estas líneas de código a su secuencia de comandos:
Primero, definimos «sopa» como el contenido HTML de la página web de noticias de la BBC. A continuación, definimos «títulos» como una array de todas las etiquetas «<h3>» que se encuentran dentro de la página web. Finalmente, el script recorre la array de «títulos» y muestra todo su contenido uno por uno, eliminando cada elemento de su HTML externo y mostrando solo su contenido de texto usando el método «text.strip()».
Python3
soup = BeautifulSoup(response.text, 'html.parser') headlines = soup.find('body').find_all('h3') for x in headlines: print(x.text.strip())
A continuación se muestra la implementación:
Python3
import requests from bs4 import BeautifulSoup url = 'https://www.bbc.com/news' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') headlines = soup.find('body').find_all('h3') for x in headlines: print(x.text.strip())
Producción:
Limpiando los datos
Es posible que haya notado que su salida contiene titulares de noticias duplicados y contenidos de texto que no son titulares de noticias.
Cree una lista de todos los elementos de texto de los que desea deshacerse:
no deseado = [‘BBC World News TV’, ‘BBC World Service Radio’, ‘News daily newsletter’, ‘Mobile app’, ‘Get in touch’]
Luego imprima elementos de texto solo si no están en esta lista poniendo:
print(x.text.strip())
A continuación se muestra la implementación:
Python3
import requests from bs4 import BeautifulSoup url = 'https://www.bbc.com/news' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') headlines = soup.find('body').find_all('h3') unwanted = ['BBC World News TV', 'BBC World Service Radio', 'News daily newsletter', 'Mobile app', 'Get in touch'] for x in list(dict.fromkeys(headlines)): if x.text.strip() not in unwanted: print(x.text.strip())
Producción:
Publicación traducida automáticamente
Artículo escrito por levrmedia9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA