Saltar al contenido

Cómo usar la API de Reddit en Python

API de Reddit: descripción general

En una publicación anterior “Cómo acceder a varios servicios web en Python”, describimos
cómo podemos acceder a servicios como YouTube, Vimeo y Twitter a través de sus API.

Tenga en cuenta que hay algunos Envoltorios de Reddit que puedes usar para interactuar con Reddit.

Un contenedor es un cliente de API, que se usa comúnmente para envolver la API en
utilizar funciones haciendo las propias llamadas a la API.

Eso da como resultado que el usuario puede estar menos preocupado por cómo el código
realmente funciona.

Si no usa un contenedor, tendrá que acceder a la API de Reddits directamente,
que es exactamente lo que haremos en este post.

Empezando

Ya que nos vamos a centrar en la API de Reddit, vayamos a su API
documentación
. Te recomiendo que te familiarices con la documentación y también
preste especial atención a la descripción general y las secciones sobre “modhashes”,
“Nombres completos” y “prefijos de tipo”.

El resultado de la API se devolverá como XML o JSON. En este post lo haremos
utilice el formato JSON.

Consulte la publicación anterior o el documentación oficial para más información
sobre la estructura JSON.

Documentación de la API

En la documentación de la API, puede ver que hay muchas cosas que hacer.

En esta publicación, hemos optado por extraer información de nuestra propia cuenta de Reddit.

La información que necesitamos para eso es: OBTENER / usuario / nombre de usuario / donde[ .json | .xml ]

OBTENER / usuario / nombre de usuario / donde[ .json | .xml ]

? / usuario / nombre de usuario / descripción general
? / usuario / nombre de usuario / enviado
? / usuario / nombre de usuario / comentarios
? / usuario / nombre de usuario / me gustó
? / usuario / nombre de usuario / no me gustó
? / usuario / nombre de usuario / oculto
? / usuario / nombre de usuario / guardado

Ver la salida JSON

Si por ejemplo queremos utilizar “comentarios”, la URL sería:
http://www.reddit.com/user/spilcm/comments/.json

Puede ver que hemos reemplazado “nombre de usuario” y “dónde” con nuestra propia entrada.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Para ver la respuesta de datos, puede realizar una solicitud curl, como esta:

curl http://www.reddit.com/user/spilcm/comments/.json

… o simplemente pegue la URL en su navegador.

Puede ver que la respuesta es JSON. Esto puede ser difícil de ver en el
navegador, a menos que tenga instalado el complemento JSONView.

Estas extensiones están disponibles para Firefox y Cromo.

Empezar a codificar

Ahora que tenemos la URL, comencemos a codificar.

Abra su IDLE / Editor favorito e importe los módulos que necesitaremos.

Importando los módulos. Los módulos pprint y json son opcionales.

from pprint import pprint

import requests

import json

Hacer la llamada a la API

Ahora es el momento de realizar la llamada API a Reddit.

r = requests.get(r'http://www.reddit.com/user/spilcm/comments/.json')

Ahora, tenemos un objeto Respuesta llamado “r”. Podemos obtener toda la información que necesitamos
de este objeto.

Contenido de respuesta JSON

El módulo de solicitudes viene con un decodificador JSON incorporado, que podemos usar con
los datos JSON.

Como puede ver en la imagen de arriba, el resultado que obtenemos no es realmente lo que
desea mostrar.

La pregunta es, ¿cómo extraemos datos útiles de él?

Si solo queremos mirar las claves en el objeto “r”:

r = requests.get(r'http://www.reddit.com/user/spilcm/comments/.json')

data = r.json()

print data.keys()

Eso debería darnos el siguiente resultado:

[u’kind’, u’data’]

Estas claves son muy importantes para nosotros.

Ahora es el momento de obtener los datos que nos interesan.

Obtenga el feed JSON y copie / pegue la salida en un editor JSON para obtener una
descripción general de los datos.

Una forma fácil de hacerlo es pegar el resultado JSON en un editor JSON en línea.

yo suelo http://jsoneditoronline.org/ pero cualquier editor JSON debería hacer el trabajo.

Veamos un ejemplo de esto:

r = requests.get(r'http://www.reddit.com/user/spilcm/comments/.json')
r.text

Como puede ver en la imagen, obtenemos las mismas claves (tipo, datos) que obtuvimos antes.
cuando imprimimos las claves.

Convierta JSON en un diccionario

Convirtamos los datos JSON en un diccionario de Python.

Puedes hacerlo así:

r.json()

#OR

json.loads(r.text)

Ahora, cuando tenemos un diccionario de Python, comenzamos a usarlo para obtener los resultados.
queremos.

Navega para encontrar datos útiles

Simplemente navega hacia abajo hasta que encuentres lo que buscas.

r = requests.get(r'http://www.reddit.com/user/spilcm/comments/.json')

r.text

data = r.json()

print data['data']['children'][0]

El resultado se almacena en la variable “datos”.

Para acceder a nuestros datos JSON, simplemente usamos la notación entre corchetes, así:
datos[‘key’].

Recuerde que una matriz se indexa desde cero.

En lugar de imprimir todas y cada una de las entradas, podemos usar un bucle for para iterar
a través de nuestro diccionario.

for child in data['data']['children']:

    print child['data']['id'], "
", child['data']['author'],child['data']['body']

    print

Podemos acceder a todo lo que queramos de esta manera, solo busque qué datos tiene
interesado en.

El guión completo

Como puede ver en nuestro script completo, solo tenemos que importar un módulo:
(peticiones)

import requests

r = requests.get(r'http://www.reddit.com/user/spilcm/comments/.json')

r.text

data = r.json()

for child in data['data']['children']:
    print child['data']['id'], "
", child['data']['author'],child['data']['body']
    print

Cuando ejecute el script, debería ver algo similar a esto:

Más lectura

http://docs.python-requests.org/en/latest/

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.