Extraiga los detalles del feed de RSS en Python

En el artículo, veremos cómo extraer fuentes y publicar detalles utilizando fuentes RSS para un blog de Hashnode. Aunque lo vamos a usar para blogs en Hashnode, también se puede usar para otras fuentes.

RSS significa Rich Site Summary y utiliza formatos web estándar para publicar información que cambia con frecuencia, como publicaciones de blog, noticias, audio, video, etc. Los documentos RSS a menudo se conocen como fuentes que consisten en texto y metadatos, como la hora y el nombre del autor.

Instalación del analizador de feeds:

Usaremos la biblioteca de python Feedparser para analizar la fuente RSS del blog. Es una biblioteca bastante popular para analizar fuentes de blogs.

pip install feedparser

Entendamos esto paso a paso:

Paso 1: Obtener fuente RSS

Utilice la función feedparser.parse() para crear un objeto de fuente que contenga un blog analizado. Toma la URL del feed del blog.

Python3

# url of blog feed
feed_url = "https://vaibhavkumar.hashnode.dev/rss.xml"
  
blog_feed = feedparser.parse(feed_url)

Paso 2: Obtener detalles del blog.

Python3

# returns title of the blog site
blog_feed.feed.title 
  
# returns the link of the blog
# and number of entries(blogs) in the site.
blog_feed.feed.link
len(blog_feed.entries)
  
# Details of individual blog can
# be accessed by using attribute name
print(blog_feed.entries[0].title)
print(blog_feed.entries[0].link)
print(blog_feed.entries[0].author)
print(blog_feed.entries[0].published)
  
# Getting lists of tags and authors.
tags = [tag.term for tag in blog_feed.entries[0].tags]
authors= [author.name for author in blog_feed.entries[0].authors]

A continuación se muestra la implementación completa: ahora use el código anterior para escribir una función que tome el enlace de la fuente RSS y devuelva los detalles.

Python3

def get_posts_details(rss=None):
    
    """
    Take link of rss feed as argument
    """
    if rss is not None:
        
          # import the library only when url for feed is passed
        import feedparser
          
        # parsing blog feed
        blog_feed = blog_feed = feedparser.parse(rss)
          
        # getting lists of blog entries via .entries
        posts = blog_feed.entries
          
        # dictionary for holding posts details
        posts_details = {"Blog title" : blog_feed.feed.title,
                        "Blog link" : blog_feed.feed.link}
          
        post_list = []
          
        # iterating over individual posts
        for post in posts:
            temp = dict()
              
            # if any post doesn't have information then throw error.
            try:
                temp["title"] = post.title
                temp["link"] = post.link
                temp["author"] = post.author
                temp["time_published"] = post.published
                temp["tags"] = [tag.term for tag in post.tags]
                temp["authors"] = [author.name for author in post.authors]
                temp["summary"] = post.summary
            except:
                pass
              
            post_list.append(temp)
          
        # storing lists of posts in the dictionary
        posts_details["posts"] = post_list 
          
        return posts_details # returning the details which is dictionary
    else:
        return None
  
if __name__ == "__main__":
  import json
  
  feed_url = "https://vaibhavkumar.hashnode.dev/rss.xml"
  
  data = get_posts_details(rss = feed_url) # return blogs data as a dictionary
    
  if data:
    # printing as a json string with indentation level = 2
    print(json.dumps(data, indent=2)) 
  else:
    print("None")

Producción:

Publicación traducida automáticamente

Artículo escrito por kumarv456 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 *