dark proxyscrape logotipo

Como Scrape Reddit usando Python

Como fazer, Python, Scraping, 02/11/20225 minutos de leitura

Índice

As pessoas podem facilmente coletar e scrape informações de várias fontes, como Facebook, Reddit e Twitter. Você pode pensar em um scraper como uma ferramenta especializada que extrai dados de uma página da Web com precisão e rapidez. As APIs scraping ajudam os scrapers a evitar que sejam banidos por técnicas antiscraping que os sites colocam. No entanto, é caro usar APIs em comparação com uma ferramenta proxy gerenciada por você mesmo.

Você já usou o Reddit? Se você é um pesquisador social e passa muito tempo on-line, é provável que já tenha ouvido falar do Reddit. O Reddit se apresenta como a "primeira página da Internet". É um fórum de discussão on-line onde as pessoas compartilham conteúdo e notícias ou comentam as publicações de outras pessoas. Portanto, é uma fonte incrível de dados para profissionais de marketing da Internet e pesquisadores sociais. 

O Reddit tem uma API chamada Python Reddit API Wrapper, abreviada para PRAW, para rastrear dados. Neste blog, mostrarei as etapas de como acessar o scrape Reddit usando python. Mas, antes disso, você precisa saber por que precisa acessar o scrape Reddit.

Por que você precisa acessar Scrape Reddit?

Se falarmos sobre o design do Reddit, ele é dividido em várias comunidades conhecidas como "subreddits". Você pode encontrar qualquer subreddit de seu tópico de interesse na Internet. Os pesquisadores sociais executam análises, fazem inferências e implementam planos de ação quando extraem discussões do Reddit sobre um determinado tópico. 

Você pode scrape muitos pontos de dados do Reddit, como:

  • Links
  • Comentários
  • Imagens
  • Lista de subreddits
  • Envios para cada subreddit
  • Nomes de usuário
  • Upvotes
  • Downvotes

Você pode scrape qualquer informação do Reddit relevante para sua empresa devido às seguintes necessidades:

  • Para criar aplicativos de PNL
  • Para rastrear os sentimentos dos clientes
  • Para ficar por dentro das tendências do mercado
  • Para pesquisas com consumidores
  • Para monitorar o impacto de suas campanhas de marketing

Por exemplo, 

  • Uma marca de moda precisa scrape todos os textos de comentários, títulos, links, imagens e legendas em subreddits de moda para:
    • Elaboração da estratégia de preços correta
    • Identificação de tendências de cores
    • Descobrir os pontos problemáticos dos fashionistas com várias marcas
  • Os profissionais de jornalismo e notícias precisam scrape posts de autores com links de blogs para treinar algoritmos de aprendizado de máquina para resumo automático de textos.
  • As empresas de investimento e comércio precisam acessar scrape subreddits relacionados ao "mercado de ações" para elaborar um plano de investimento, interpretando quais ações estão sendo discutidas.

Desafios do Scraping Reddit

O Reddit scraping usa raspadores da Web (programas de computador) para extrair dados disponíveis publicamente do site do Reddit. Você precisa usar os raspadores do Reddit por causa das limitações que você enfrenta ao usar a API oficial do Reddit. No entanto, se você usar o web scraper que não usa a API do Reddit para extrair dados do Reddit, violará os termos de uso do Reddit. Mas isso não significa que a Web scraping seja ilegal.

Para ter uma sessão scraping sem problemas, você terá que evitar os sistemas antiscraping implementados pelo Reddit. As técnicas antiscraping mais comuns usadas pelo Reddit são:

  • Rastreamento de IP
  • Captchas

Você pode resolver o problema do rastreamento de IP com a ajuda do proxies e da rotação de IP. Por outro lado, você pode resolver o problema dos Captchas usando soluções de Captcha, como o 2Captcha.

Como Scrape Reddit usando Python

Há cinco maneiras de acessar o scrape Reddit, e elas são:

  • Manual Scraping - É o método mais fácil, mas menos eficiente em termos de velocidade e custo. No entanto, ele produz dados com alta consistência.
  • Uso da API do Reddit - Você precisa de habilidades básicas de codificação para scrape o Reddit usando a API do Reddit. Ela fornece os dados, mas limita o número de postagens em qualquer tópico do Reddit a 1000.
  • APIs de terceiros com revestimento de açúcar - É uma abordagem eficaz e dimensionável, mas não é econômica.
  • Ferramentas da Web Scraping - Essas ferramentas são dimensionáveis e exigem apenas o conhecimento básico do uso de um mouse.
  • Scripts personalizados do Scraping - São altamente personalizáveis e dimensionáveis, mas exigem um alto nível de programação.

Vamos ver como podemos acessar scrape Reddit usando a API do Reddit com a ajuda das etapas a seguir.

Criar conta da API do Reddit

Você precisa criar uma conta no Reddit antes de prosseguir. Para usar o PRAW, você deve se registrar na API do Reddit seguindo este link.

Importar pacotes e módulos

Primeiro, importaremos os módulos internos do Pandas, ou seja, datetime, e dois módulos de terceiros, PRAW e Pandas, conforme mostrado abaixo:

import praw
import pandas as pd
import datetime as dt

Obtendo instâncias do Reddit e do subreddit

Você pode acessar os dados do Reddit usando o Praw, que significa Python Reddit API Wrapper. Primeiro, você precisa se conectar ao Reddit chamando a função praw.Reddit e armazenando-a em uma variável. Em seguida, você deve passar os seguintes argumentos para a função.

reddit = praw.Reddit(client_id='PERSONAL_USE_SCRIPT_14_CHARS', \
                    client_secret='SECRET_KEY_27_CHARS', \
                    user_agent='YOUR_APP_NAME', \
                    username='YOUR_REDDIT_USER_NAME', \
                    password='YOUR_REDDIT_LOGIN_PASSWORD')
Agora, você pode obter o subreddit de sua escolha. Portanto, chame a instância .subreddit do reddit (variável) e passe o nome do subreddit que deseja acessar. Por exemplo, você pode usar o subreddit r/Nootropics.
subreddit = reddit.subreddit('Nootropics')

Acessar os tópicos

Cada subreddit tem as cinco maneiras diferentes abaixo para organizar os tópicos criados pelos Redditors:

  • .novo
  • .quente
  • .polêmico
  • .dourado
  • .topo

Você pode obter os tópicos mais votados como:

top_subreddit = subreddit.top()

Você obterá um objeto semelhante a uma lista com os 100 principais envios em r/Nootropics. No entanto, o limite de solicitações do Reddit é 1000, portanto, você pode controlar o tamanho da amostra passando um limite para .top as:

top_subreddit = subreddit.top(limit=600)

Analisar e baixar os dados

Você pode scrape os dados que desejar. No entanto, estaremos scraping as informações abaixo sobre os tópicos:

  • id
  • título
  • pontuação
  • data de criação
  • texto do corpo

Faremos isso armazenando nossos dados em um dicionário e, em seguida, usando um loop for, conforme mostrado abaixo.

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

Agora, podemos acessar scrape os dados da API do Reddit. Anexaremos as informações ao nosso dicionário por meio da iteração do nosso objeto top_subreddit.

for submission in top_subreddit:
    topics_dict["id"].append(submission.id)
    resumo_de_tópicos["título"].append(submissão.título)
    resumo_tópicos["pontuação"].append(submissão.pontuação)
    resumo_tópicos["criado"].append(submissão.criado)
    topics_dict["body"].append(submission.selftext)

Agora, colocamos nossos dados em Dataframes do Pandas, pois os dicionários do Python não são fáceis de ler.

topics_data = pd.DataFrame(topics_dict)

Exportar CSV

É muito fácil criar arquivos de dados em vários formatos no Pandas, portanto, usamos as seguintes linhas de código para exportar nossos dados para um arquivo CSV.

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

Melhor Reddit Proxies de 2021

Você sabe que o Reddit não é um site muito rigoroso quando se trata de restrições de uso do proxy . Mas você pode ser pego e penalizado se automatizar suas ações no Reddit sem usar o proxies. 

Então, vamos dar uma olhada em alguns dos melhores proxies para o Reddit que se enquadram em duas categorias:

Residencial Proxies - Esses são os endereços IP que o provedor de serviços de Internet (ISP) atribui a um dispositivo em um local físico específico. Esses proxies revelam a localização real do dispositivo que o usuário usa para fazer login em um site.
Datacenter proxies - Esses são vários endereços IP que não se originam de nenhum provedor de serviços de Internet. Nós os adquirimos de um provedor de serviços em nuvem.

Veja a seguir alguns dos principais sites residenciais e de data center proxies para o Reddit.

Smartproxy

O Smartproxy é um dos principais provedores residenciais premium de proxy , pois é eficaz para a automação do Reddit. Ele tem um amplo pool de IPs e fornece acesso a todos os IPs quando você assina o serviço. 

Stormproxy

O preço e a largura de banda ilimitada dos Stormproxies fazem deles uma boa opção. Eles são acessíveis e baratos de usar. Eles têm proxies para vários casos de uso e fornecem o melhor proxies residencial para automação do Reddit.

ProxyScrape

ProxyScrape é um dos mais populares provedores de serviços proxy que se concentra em oferecer proxies para scraping. Ele também oferece o datacenter dedicado proxies juntamente com o datacenter compartilhado proxies. Ela tem mais de 40 mil datacenters proxies que você pode usar para scrape dados de sites na Internet.

ProxyScrape fornece três tipos de serviços a seus usuários, a saber 

Proxies altas

A Highproxies trabalha com o Reddit e tem as seguintes categorias de proxies:
  • Compartilhado proxies
  • Privado proxies
  • Sites classificados proxies
  • Emissão de bilhetes proxies
  • Mídia proxies

Proxies instantâneos

Você também pode usar Instantproxies para automação do Reddit, pois eles são muito seguros, confiáveis, rápidos e têm um tempo de atividade de cerca de 99,9%. Eles são os mais baratos de todos os datacenters proxies.

Por que usar o Reddit Proxies?

Você precisa do proxies quando estiver trabalhando com algumas ferramentas automáticas no Reddit. Isso ocorre porque o Reddit é um site muito sensível que detecta facilmente ações automáticas e bloqueia o acesso do seu IP à plataforma. Portanto, se você estiver automatizando algumas das tarefas, como votos, postagens, ingresso/descanso de grupos e gerenciamento de mais de uma conta, definitivamente precisará usar proxies para evitar resultados ruins.

Soluções alternativas para Scrape Reddit

Você pode optar pelo scraping manual se os requisitos do Reddit scraping forem pequenos. Mas se os requisitos forem grandes, você terá de aproveitar as metodologias scraping automatizadas, como as ferramentas scraping da Web e os scripts personalizados. Os raspadores da Web provam ser eficientes em termos de custo e recursos quando seus requisitos diários de scraping estão dentro de alguns milhões de posts.

Então, vamos dar uma olhada em alguns dos melhores raspadores do Reddit como a melhor solução para scrape grandes quantidades de dados do Reddit.

Scrapestrom

O Scrapestorm é uma das melhores ferramentas do scraping disponíveis no mercado, pois funciona muito bem quando se trata do scraping Reddit. Ele usa inteligência artificial para identificar automaticamente os principais pontos de dados na página da Web.

Raspador do Reddit da Apify

O raspador do Reddit da Apify facilita a extração de dados sem usar a API do Reddit. Isso significa que você não precisa de um token de API de desenvolvedor e de autorização do Reddit para baixar os dados para uso comercial. Você também pode otimizar seu scraping usando o serviço proxy integrado da plataforma Apify. 

Conclusão

Discutimos cinco maneiras de scrape os dados do Reddit, e a mais fácil delas é usar a API do Reddit, pois requer apenas habilidades básicas de codificação. O PRAW é um wrapper Python para a API do Reddit que permite que você use uma API do Reddit com uma interface Python limpa. Mas quando você tiver grandes requisitos do Reddit scraping , poderá extrair dados disponíveis publicamente do site do Reddit com a ajuda de raspadores do Reddit. Para automatizar suas ações no site do Reddit, você precisa usar um datacenter ou um site residencial proxies.