Comment récupérer Reddit à l'aide de Python

Comment faire, Python, Scraping, Nov-15-20225 minutes de lecture

Les gens peuvent facilement recueillir et gratter des informations à partir de sources multiples telles que Facebook, Reddit et Twitter. Un scraper est un outil spécialisé qui permet d'extraire des données d'une page web de manière précise et rapide. Les API de scraping permettent aux scrapeurs d'éviter d'être bannis par les techniques anti-scraping mises en place par les sites web. Cependant, il est

Table des matières

Les gens peuvent facilement recueillir et gratter des informations à partir de sources multiples telles que Facebook, Reddit et Twitter. Un scraper est un outil spécialisé qui permet d'extraire des données d'une page web avec précision et rapidité. Les API de scraping permettent aux scrapeurs d'éviter d'être bannis par les techniques anti-scraping mises en place par les sites web. Toutefois, l'utilisation des API est plus coûteuse que celle d'un outil proxy géré par vos soins.

Avez-vous utilisé Reddit ? Si vous êtes un chercheur en sciences sociales et que vous passez beaucoup de temps en ligne, il y a de fortes chances que vous ayez entendu parler de Reddit. Reddit se présente comme la "première page d'Internet". Il s'agit d'un forum de discussion en ligne où les internautes partagent du contenu et des informations ou commentent les messages des autres. Il s'agit donc d'une incroyable source de données pour les spécialistes du marketing en ligne et les chercheurs en sciences sociales. 

Reddit dispose d'une API appelée Python Reddit API Wrapper, abrégée en PRAW, pour crawler des données. Dans ce blog, je vais vous montrer les étapes à suivre pour scraper Reddit en utilisant Python. Mais avant cela, vous devez savoir pourquoi vous devez scraper Reddit.

Pourquoi avez-vous besoin de scraper Reddit ?

Si nous parlons de la conception de Reddit, il est divisé en plusieurs communautés connues sous le nom de "subreddits". Vous pouvez trouver n'importe quel subreddit sur le sujet qui vous intéresse sur l'internet. Les chercheurs en sciences sociales effectuent des analyses, tirent des conclusions et mettent en œuvre des plans d'action lorsqu'ils extraient des discussions Reddit sur un sujet particulier. 

Vous pouvez extraire de nombreux points de données de Reddit, tels que

  • Liens
  • Commentaires
  • Images
  • Liste des subreddits
  • Soumissions pour chaque subreddit
  • Noms d'utilisateur
  • Appréciations
  • Notes de bas de page

Vous pouvez récupérer n'importe quelle information de Reddit pertinente pour votre entreprise en raison des besoins suivants :

  • Créer des applications NLP
  • Suivre les sentiments des clients
  • Se tenir au courant des tendances du marché
  • Pour les études de consommation
  • Contrôler l'impact de vos campagnes de marketing

Par exemple, 

  • Une marque de mode a besoin de récupérer tous les textes des commentaires, les titres, les liens, les images et les légendes dans les subreddits de mode pour : Concevoir la bonne stratégie de prixIdentifier les tendances en matière de couleursDécouvrir les points de douleur des fashionistas avec différentes marques
  • Concevoir la bonne stratégie de prix
  • Identifier les tendances en matière de couleurs
  • Découvrir les points faibles des fashionistas auprès de différentes marques
  • Les acteurs du journalisme et de l'information doivent récupérer les billets d'auteurs avec les liens de blogs pour former des algorithmes d'apprentissage automatique pour le résumé automatique de texte.
  • Les sociétés d'investissement et de trading doivent parcourir les subreddits liés au marché boursier pour concevoir un plan d'investissement en interprétant les actions qui y sont discutées.

Les défis du scraping de Reddit

Le scraping Reddit utilise des web scrapers (programmes informatiques) pour extraire des données accessibles au public à partir du site web Reddit. Vous devez utiliser les scrapeurs Reddit en raison des limitations auxquelles vous devez faire face lorsque vous utilisez l'API officielle de Reddit. Toutefois, si vous utilisez un scraper web qui n'utilise pas l'API de Reddit pour extraire des données de Reddit, vous enfreindrez les conditions d'utilisation de Reddit. Mais cela ne signifie pas que le web scraping est illégal.

Pour que votre session de scraping se déroule sans encombre, vous devez déjouer les systèmes anti-scraping mis en place par Reddit. Les techniques anti-scraping les plus courantes utilisées par Reddit sont les suivantes :

  • Suivi de l'IP
  • Captchas

Vous pouvez résoudre le problème du suivi des adresses IP à l'aide de proxys et de la rotation des adresses IP. D'autre part, vous pouvez résoudre le problème des Captchas en utilisant des solutions de Captcha telles que 2Captcha.

Comment récupérer Reddit à l'aide de Python

Il existe cinq façons de récupérer Reddit, et elles sont les suivantes :

  • Scraping manuel - C'est la méthode la plus simple mais la moins efficace en termes de rapidité et de coût. Cependant, elle permet d'obtenir des données très cohérentes.
  • Utilisation de l'API Reddit - Vous devez avoir des compétences de base en codage pour récupérer Reddit à l'aide de l'API Reddit. Elle fournit les données mais limite le nombre de messages dans un fil de discussion Reddit à 1000.
  • API tierces enrobées de sucre - Il s'agit d'une approche efficace et évolutive, mais elle n'est pas rentable.
  • Outils d'exploration du Web - Ces outils sont évolutifs et ne requièrent qu'une connaissance de base de l'utilisation d'une souris.
  • Scripts de scraping personnalisés - Ils sont hautement personnalisables et évolutifs mais requièrent un haut niveau de programmation.

Voyons comment nous pouvons récupérer Reddit en utilisant l'API Reddit à l'aide des étapes suivantes.

Créer un compte API Reddit

Vous devez créer un compte Reddit avant de continuer. Pour utiliser PRAW, vous devez vous inscrire à l'API Reddit en suivant ce lien.

Importer des paquets et des modules

Tout d'abord, nous allons importer les modules intégrés de Pandas, c'est-à-dire datetime, et deux modules tiers, PRAW et Pandas, comme indiqué ci-dessous :

import praw
import pandas as pd
import datetime as dt

Obtenir des instances Reddit et subreddit

Vous pouvez accéder aux données Reddit en utilisant Praw, qui signifie Python Reddit API Wrapper. Tout d'abord, vous devez vous connecter à Reddit en appelant la fonction praw.Reddit et en la stockant dans une variable. Ensuite, vous devez passer les arguments suivants à la fonction.

reddit = praw.Reddit(client_id='PERSONAL_USE_SCRIPT_14_CHARS', \N-secret_client='SECRET_CLEY_27_CHARS', \N
                    client_secret='SECRET_KEY_27_CHARS ', \N- user_agent='YOUR_APP_NAME', \N
                    user_agent='YOUR_APP_NAME', \N- user_agent='YOUR_APP_NAME', \N
                    username='VOTRE_NOM_D'UTILISATEUR_REDDIT', \N- Mot de passe='VOTRE_NOM_D'UTILISATEUR_REDDIT', \N
                    password='VOTRE_REDDIT_LOGIN_PASSWORD')

Maintenant, vous pouvez obtenir le subreddit de votre choix. Appelez donc l'instance .subreddit de reddit (variable), et passez le nom du subreddit auquel vous voulez accéder. Par exemple, vous pouvez utiliser le subreddit r/Nootropics.

subreddit = reddit.subreddit('Nootropics')

Accéder aux fils

Chaque subreddit dispose des cinq façons différentes d'organiser les sujets créés par les Redditors :

  • .nouveau
  • .chaud
  • .controversé
  • .doré
  • .top

Vous pouvez consulter les sujets les plus votés :

top_subreddit = subreddit.top()

Vous obtiendrez un objet de type liste contenant les 100 meilleures soumissions dans r/Nootropics. Cependant, la limite de requête de Reddit est de 1000, vous pouvez donc contrôler la taille de l'échantillon en passant une limite à .top as :

top_subreddit = subreddit.top(limit=600)

Analyse et téléchargement des données

Vous pouvez récupérer toutes les données que vous souhaitez. Cependant, nous allons récupérer les informations suivantes sur les sujets :

  • id
  • titre
  • score
  • date de création
  • corps du texte

Pour ce faire, nous stockerons nos données dans un dictionnaire, puis nous utiliserons une boucle for, comme indiqué ci-dessous.

topics_dict = { "title":[], \
                "score":[], \
                "id":[], "url":[], \
                "created": [], \
                "body":[]}

Nous pouvons maintenant extraire les données de l'API Reddit. Nous ajouterons les informations à notre dictionnaire en parcourant notre objet top_subreddit.

pour soumission dans top_subreddit :
    topics_dict["id"].append(submission.id)
    topics_dict["title"].append(submission.title)
    topics_dict["score"].append(submission.score)
    topics_dict["created"].append(submission.created)
    topics_dict["body"].append(soumission.selftext)

Nous plaçons maintenant nos données dans des Pandas Dataframes, car les dictionnaires Python ne sont pas faciles à lire.

topics_data = pd.DataFrame(topics_dict)

Exporter CSV

Il est très facile de créer des fichiers de données dans différents formats avec Pandas. Nous utilisons donc les lignes de code suivantes pour exporter nos données vers un fichier CSV.

topics_data.to_csv('FILENAME.csv', index=False)

Meilleur Reddit proxys de 2021

Vous savez que Reddit n'est pas un site très strict en ce qui concerne les restrictions d'utilisation de proxy. Mais vous pouvez être pris et pénalisé si vous automatisez vos actions sur Reddit sans utiliser proxys. 

Examinons donc quelques-uns des meilleurs sites proxys pour Reddit, qui se répartissent en deux catégories :

Residential proxys - Il s'agit des adresses IP que le fournisseur d'accès à Internet (FAI) attribue à un appareil situé à un endroit précis. Ces adresses proxys révèlent l'emplacement réel de l'appareil que l'utilisateur utilise pour se connecter à un site web.

Datacenter proxys - Il s'agit de diverses adresses IP qui ne proviennent d'aucun fournisseur de services Internet. Nous les acquérons auprès d'un fournisseur de services en nuage.

Voici quelques-uns des meilleurs sites résidentiels et centres de données proxys pour Reddit.

Smartproxy

Smartproxy est l'un des meilleurs fournisseurs de proxy résidentiel premium car il est efficace pour l'automatisation de Reddit. Il dispose d'un vaste pool d'IP et fournit un accès à toutes les IP une fois que vous vous abonnez à son service. 

Stormproxy

Les prix et la bande passante illimitée des Stormproxies en font un bon choix. Ils sont abordables et peu coûteux à utiliser. Ils ont proxys pour différents cas d'utilisation et fournissent le meilleur proxys résidentiel pour l'automatisation de Reddit.

ProxyScrape

ProxyScrape est l'un des fournisseurs de services proxy les plus populaires qui se concentre sur l'offre de proxys pour le scraping. Il propose également un centre de données dédié proxys ainsi qu'un centre de données partagé proxys. Il dispose de plus de 40k centres de données proxys que vous pouvez utiliser pour récupérer les données des sites Web sur Internet.

ProxyScrape fournit trois types de services à ses utilisateurs, à savoir.., 

Proxies élevées

Highproxies travaille avec Reddit et a les catégories suivantes de proxys:

  • Partagé proxys
  • Privé proxys
  • Sites classés proxys
  • Billetterie proxys
  • Les médias proxys

Proxies instantanées

Vous pouvez également utiliser Instantproxies pour l'automatisation de Reddit, car ils sont très sûrs, fiables, rapides et ont un temps de disponibilité d'environ 99,9 %. Ils sont les moins chers de tous les centres de données proxys.

Pourquoi utiliser Reddit proxys?

Vous avez besoin de proxys lorsque vous travaillez avec des outils automatiques sur Reddit. En effet, Reddit est un site web très sensible qui détecte facilement les actions automatiques et bloque l'accès de votre IP à la plateforme. Ainsi, si vous automatisez certaines tâches telles que les votes, les messages, l'adhésion/désaffiliation à des groupes et la gestion de plusieurs comptes, vous devez impérativement utiliser proxys pour éviter tout problème.

Solutions alternatives pour scraper Reddit

Vous pouvez opter pour le scraping manuel si vos besoins en scraping Reddit sont limités. Mais si les besoins sont importants, vous devez tirer parti de méthodologies de scraping automatisées telles que les outils de scraping web et les scripts personnalisés. Les outils de scraping web s'avèrent efficaces en termes de coûts et de ressources lorsque vos besoins quotidiens en scraping ne dépassent pas quelques millions de posts.

Nous allons donc nous pencher sur quelques-uns des meilleurs scrapers Reddit, qui constituent la meilleure solution pour récupérer de grandes quantités de données Reddit.

Grattoir

Scrapestorm est l'un des meilleurs outils de scraping disponibles sur le marché, car il fonctionne très bien lorsqu'il s'agit de scraper Reddit. Il utilise l'intelligence artificielle pour identifier automatiquement les points de données clés de la page web.

Le scraper Reddit d'Apify

Le scraper Reddit d'Apify vous permet d'extraire facilement des données sans utiliser l'API Reddit. Cela signifie que vous n'avez pas besoin d'un jeton API de développeur ni d'une autorisation de Reddit pour télécharger les données à des fins commerciales. Vous pouvez également optimiser votre scraping en utilisant le service proxy intégré de la plateforme Apify. 

Conclusion

Nous avons discuté de cinq façons de récupérer les données de Reddit, et la plus simple est d'utiliser l'API Reddit car elle ne nécessite que des compétences de codage de base. PRAW est un wrapper Python pour l'API Reddit qui vous permet d'utiliser une API Reddit avec une interface Python propre. Mais lorsque vous avez des besoins importants en matière de scraping Reddit, vous pouvez extraire des données accessibles au public à partir du site web Reddit à l'aide de scrapers Reddit. Pour automatiser vos actions sur le site web Reddit, vous devez utiliser un centre de données ou un site résidentiel proxys.