TECH4GEEKS-LOGO-HEADER
Oxary Magazine
$10 – $15 / Week

Cómo descargar datos de Instagram con Python

Instagram es una de las redes sociales más grandes del mundo, con alrededor de 1210 millones de usuarios en 2021, o alrededor del 28 % de Internet. según Statista.

Este artículo es una guía sobre cómo descargar mediante programación datos de Instagram desde un perfil usando Python de dos maneras. El primer método es cargar medios usando Instaloader. El segundo es escribir un script de Python simple para obtener datos JSON sobre el perfil.

Es importante tener en cuenta que el raspado de datos puede infringir los Términos de servicio de Instagram y le recomendamos que solo descargue datos de su cuenta.

Contenido del sitio

Usando Instaloader

cargador de insta es un paquete de Python para descargar medios de Instagram. Es increíblemente fácil de usar y hace que la extracción y descarga de datos sea rápida y sencilla. Para comenzar a usar Instaloader, comience por instalarlo usando pip:

pip install instaloader

Una vez instalado, puede usarlo desde su interfaz de línea de comandos o como un paquete en un script de Python.

Para usarlo desde la línea de comandos, usa el comando instaloader. Por ejemplo, para mostrar información de ayuda, escriba el siguiente comando en su terminal:

instaloader --help

Para descargar la imagen de perfil de un usuario, ingrese el comando con una etiqueta –profile, seguida del nombre de usuario. Entonces:

instaloader --profile <USERNAME OF THE PROFILE>

Pero para que este comando funcione, primero debe iniciar sesión. Para hacer esto, pasa la opción de conexión así:

instaloader --login <YOUR USERNAME> --profile <USERNAME OF THE PROFILE>

que descargar

Con Instaloader puedes descargar diferentes medios. Este fragmento de la página del manual le muestra todas las cosas diferentes que puede descargar:

  profile               Download profile. If an already-downloaded profile has been renamed, Instaloader automatically finds it by its unique
                        ID and renames the folder likewise.
  @profile              Download all followees of profile. Requires --login. Consider using :feed rather than @yourself.
  "#hashtag"            Download #hashtag.
  %location_id          Download %location_id. Requires --login.
  :feed                 Download pictures from your feed. Requires --login.
  :stories              Download the stories of your followees. Requires --login.
  :saved                Download the posts that you marked as saved. Requires --login.
  -- -shortcode         Download the post with the given shortcode
  filename.json[.xz]    Re-Download the given object.
  +args.txt             Read targets (and options) from given textfile.

Para descargar los mensajes de un usuario en particular, debe ingresar el comando:

instaloader --login <YOUR USERNAME> <TARGET USERNAME>

En este caso, su nombre de usuario es el nombre de usuario de su cuenta de Instagram autenticado; el nombre de usuario de destino es el perfil cuyas publicaciones desea descargar.

Para descargar las publicaciones de los suscriptores de un perfil, debe ingresar el comando:

instaloader --login <YOUR USERNAME> @<TARGET USERNAME>

Tenga en cuenta que la diferencia entre este comando y el anterior es la @ antes del nombre de usuario de destino.

Una alternativa al uso de la CLI de Instaloader es usarlo como un paquete de Python. El paquete está bien documentado. aquí.

Con Instaloader, puede descargar diferentes archivos multimedia. Sin embargo, si quisiera extraer metadatos como la página de biografía de un usuario, Instaloader por sí solo no sería suficiente. Con el siguiente método, escribirá un script de Python para extraer datos de un perfil de usuario.

Escriba un script de Python para descargar datos de Instagram

Conocimiento

En este método, escribiremos un script simple para descargar datos de Instagram en Python. Este método se basa en el uso de una API JSON de Instagram relativamente desconocida para extraer datos de perfiles públicos.

La forma en que funciona esta API es que si agrega la solicitud __a=1&__d=1 al final de la URL de su perfil, Instagram responde con datos JSON sobre el perfil.

Por ejemplo, mi nombre de usuario es 0xanesu. Por lo tanto, si hago una solicitud, recibiré datos JSON en mi perfil como respuesta.

escribir el guion

Para realizar la solicitud en Python, utilizaremos el módulo de solicitudes de Python. Sin embargo, también puede usar pycURL, urllib o cualquier otra biblioteca cliente que prefiera usar para realizar solicitudes HTTP. Para comenzar, instale el módulo de solicitudes usando pip.

pip install requests

Una vez que se haya instalado, abra un archivo para escribir su script e importe la función de obtención desde el módulo de solicitudes. Además, también importe la función de cargas desde json. Esto se usará para analizar la respuesta JSON.

from requests import get
from json import loads

Una vez que haya importado los datos, cree una variable que almacene la URL de su perfil de Instagram.

url = ' USERNAME HERE>'

Como se mencionó anteriormente, para extraer datos de Instagram de un perfil, debe agregar los parámetros de consulta __a=1 y __d=1. Para definirlos, creamos un objeto de diccionario con los parámetros.

params = { '__a': 1, '__d': 1 }

Para autorizar las solicitudes que hacemos, Instagram requiere una identificación de sesión. Más adelante le mostraré cómo obtener su ID de sesión. Por ahora, simplemente coloque un valor de marcador de posición que anulará más adelante.

cookies = { 'sessionid': '<YOUR SESSION ID HERE>' }

A continuación, defina una función que se ejecutará cuando la consulta tenga éxito.

def on_success(response):
    profile_data_json = response.text
    parsed_data = loads(profile_data_json)
    
    print('User fullname:', parsed_data['graphql']['user']['full_name'])
    print('User bio:', parsed_data['graphql']['user']['biography'])

La función que definí tomará el objeto de respuesta, extraerá el JSON del cuerpo de la respuesta y luego analizará el JSON en un objeto. Después de eso, solo extraigo el nombre completo y la biografía del perfil.

A continuación, defina la función que se ejecutará en caso de error.

def on_error(response):
    # Printing the error if something went wrong
    print('Something went wrong')
    print('Error Code:', response.status_code)
    print('Reason:', response.reason)

Luego llamamos a la función get para realizar la solicitud, pasando la URL, los parámetros y las cookies como argumentos.

response = get(url, params, cookies=cookies)

Finalmente, comprobamos el código de estado de error. Si el estado es 200, llamamos a la función on_success. De lo contrario, simplemente llamamos a la función on_error.

if response.status_code == 200:
    on_success(response)
else:
    on_error(response)

En este punto, hemos terminado de escribir el código. Todo lo que queda es obtener el sessionid. Para obtener el ID de sesión, abra su Google Chrome y abra Instagram en la web. Asegúrese de haber iniciado sesión, luego abra Dev Tools usando Ctrl + Shift + I o Cmd + Shift + I.

Captura de pantalla de 2023-04-26-14-15-20

Con las Herramientas de desarrollo abiertas, abra la pestaña Aplicación.

Captura de pantalla de 2023-04-26-14-17-41

Luego haga clic en el submenú Cookies para mostrar las Cookies utilizadas por Instagram.

Captura de pantalla de 2023-04-26-14-19-14

Después de lo cual, copie el valor de la cookie sessionid de la lista de cookies que aparecerá en el panel Herramientas para desarrolladores.

Una vez que haya copiado la identificación de la sesión, péguela en el script y ejecútelo. En mi caso, usando Instagram como nombre de usuario (este es el resultado.

Captura de pantalla de 2023-04-27-08-40-59

Y así, podemos cargar dinámicamente datos de perfil. La API de JSON devuelve muchos más datos. Aquí está el resultado cuando imprimes todo:

Captura de pantalla de 2023-04-26-14-26-39

Y así es como extraes datos y publicaciones de los perfiles de Instagram.

Ultimas palabras

En este artículo, hemos explicado cómo descargar publicaciones y medios usando Instaloader. Luego escribimos un script personalizado para extraer datos JSON del perfil que incluye mucho más que contenido multimedia. Si le gustó este proyecto, puede consultar nuestro artículo sobre Python Timeit to Time Your Code.

Si desea aprovechar al máximo su experiencia de Instagram, consulte nuestro artículo sobre Qoob Stories: una revisión detallada del descargador de Instagram.



Fuente

Etiquetas

Comparte en:

Ultimos Post

Categorias

Lorem ipsum dolor sit amet, consectetur adipiscing elit eiusmod tempor ncididunt ut labore et dolore magna
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore