El objetivo de este tutorial es la creación de un fichero RSS.xml apto para ser cargado en google news .
¿Por qué es útil tener un fichero RSS.xml?
Básicamente por la automatización de tareas. A partir de este fichero puedes ejecutar tareas automáticas de publicación de tweets o post automáticos en Facebook. Pueden consultar el repositorio https://github.com/al118345/rss-python dónde está almacenado el ejemplo citado en esta web. Además, tenéis el siguiente video ejemplo para su consulta https://www.youtube.com/watch?v=k8mVioEJLL8:<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:nyt="http://www.nytimes.com/namespaces/rss/2.0" version="2.0">
<channel>
<title>NYT > World News</title>
<link>https://www.nytimes.com/section/world</link>
<atom:link href="https://rss.nytimes.com/services/xml/rss/nyt/World.xml" rel="self" type="application/rss+xml"/>
<description/>
<language>en-us</language>
<copyright>Copyright 2022 The New York Times Company</copyright>
<lastBuildDate>Sat, 19 Mar 2022 09:46:36 +0000</lastBuildDate>
<pubDate>Sat, 19 Mar 2022 09:08:28 +0000</pubDate>
<image>
<title>NYT > World News</title>
<url>https://static01.nyt.com/images/misc/NYT_logo_rss_250x40.png</url>
<link>https://www.nytimes.com/section/world</link>
</image>
<item>
<title>The Battle for Kyiv Looms as a Long and Bloody Conflict</title>
<link>https://www.nytimes.com/2022/03/19/world/europe/kyiv-ukraine-russia-war.html</link>
<guid isPermaLink="true">https://www.nytimes.com/2022/03/19/world/europe/kyiv-ukraine-russia-war.html</guid>
<atom:link href="https://www.nytimes.com/2022/03/19/world/europe/kyiv-ukraine-russia-war.html" rel="standout"/>
<description>Ukraine’s capital is the biggest prize of all for the Russian military. If Russia tries to take control, it could lead to one of the biggest urban conflicts since World War II.</description>
<pubDate>Sat, 19 Mar 2022 09:00:22 +0000</pubDate>
<category domain="http://www.nytimes.com/namespaces/keywords/nyt_geo">Ukraine</category>
<category domain="http://www.nytimes.com/namespaces/keywords/nyt_geo">Russia</category>
<category domain="http://www.nytimes.com/namespaces/keywords/des">Russian Invasion of Ukraine (2022)</category>
<category domain="http://www.nytimes.com/namespaces/keywords/des">War and Armed Conflicts</category>
<category domain="http://www.nytimes.com/namespaces/keywords/nyt_geo">Kyiv (Ukraine)</category>
<category domain="http://www.nytimes.com/namespaces/keywords/des">Defense and Military Forces</category>
</item>
</channel>
</rss>
De todos estos elementos, los principales campos que necesitamos rellenar son: Elementos obligatorios | Función |
---|---|
title | El elemento title contiene el título del canal RSS. |
link | El elemento link contiene el enlace a la página web. |
description | El elemento description contiene una descripción del canal RSS. |
# -*- coding: utf-8 -*-
from feedgen.feed import FeedGenerator
import pandas as pd
#parametros a rellenar
nombre_autor = "1938.com.es"
email= "1938web@gmail.com"
titulo= "Web 1938.com.es"
logo= "https://1938.com.es/assets/imagenes/logo.png " #opcional
url = "https://1938.com.es/";
descripcion ="Videos sobre la información de interes sobre el diseño de aplicaciones moviles, ciencia de datos (BigData) y tecnologías de la información"
fg = FeedGenerator()
fg.id(1)
fg.title(titulo)
fg.author(
{"name": nombre_autor, "email": email}
)
fg.logo(logo)
fg.link(href=url, rel="self")
fg.language("es")
fg.description(descripcion)
nombre_fichero ="rss.csv"
df = pd.read_csv(nombre_fichero, sep=';' ,header=0)
for index, row in df.iterrows():
fe = fg.add_entry(order="append")
fe.id(row['url'])
fe.title(row['titulo'])
fe.content(row['tematica'])
fe.author(
{"name": "Rubén Pérez ", "email": "1938web@gmail.com"}
)
fe.link({"href": row['url'], "title": row['titulo']})
rssfeed = fg.rss_str(pretty=True)
fg.rss_file("rss_video.xml")
Cómo veis, no tiene ningún misterio. Primero de todo hay que rellenar una parte estática cómo el nombre de la web, correo, etc. Una vez rellenado, estos datos son utilizados para identificar el sitio web y su autor. Posteriormente, cargamos el documento csv con la siguiente estructura titulo | url | temática |
---|---|---|
Fundamentos de redes bayesianas | https://1938.com.es/redes-bayesianas | matemáticas |
Introducción a MongoDB. Ejemplos de consultas en documentos. | https://1938.com.es/mongodb | mongodb nosql |
<?xml version='1.0' encoding='UTF-8'?>
<rss
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
<title>1938.com.es</title>
<link>https://1938.com.es/</link>
<description>Videos sobre la información de interes sobre el diseño de aplicaciones moviles, ciencia de datos (BigData) y tecnologías de la información</description>
<atom:link href="https://1938.com.es/" rel="self"/>
<docs>http://www.rssboard.org/rss-specification</docs>
<generator>python-feedgen</generator>
<image>
<url>https://1938.com.es/assets/imagenes/logo.png</url>
<title>1938.com.es</title>
<link>https://1938.com.es/</link>
</image>
<language>es</language>
<lastBuildDate>Sat, 19 Mar 2022 10:25:30 +0000</lastBuildDate>
<item>
<title>Fundamentos de redes bayesianas</title>
<link>https://1938.com.es/redes-bayesianas</link>
<description> matematicas</description>
<author>1938web@gmail.com (Rubén Pérez )</author>
<guid isPermaLink="false">https://1938.com.es/redes-bayesianas</guid>
</item>
<item>
<title>Introducción a MongoDB. Ejemplos de consultas en documentos.</title>
<link>https://1938.com.es/mongodb</link>
<description>mongodb nosql</description>
<author>1938web@gmail.com (Rubén Pérez )</author>
<guid isPermaLink="false">https://1938.com.es/mongodb</guid>
</item>
</channel>
</rss>