AdsPower
AdsPower

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

By AdsPower
539 Views

Com mais de 1,3 bilhão de usuários, o Instagram é uma mina de ouro de dados valiosos para empresas que buscam pesquisa de mercado, geração de leads e monitoramento de desempenho. Mas extrair esses dados do Instagram é a parte complicada.

O processo não é simples e tem muitas complexidades, seja devido às políticas do Instagram ou a ambiguidades técnicas.

Este guia responde à pergunta "como extrair dados do Instagram" apresentando três maneiras que envolvem métodos com pouco e muito código, além de um método sem código.

A Extração de Dados do Instagram é Legal?

A resposta para a pergunta "a extração de dados do Instagram é legal?" é sim e não ao mesmo tempo, pois depende do tipo de dados que você está extraindo. Se você deseja extrair dados públicos do Instagram, a resposta é sim.

Mas se você estiver extraindo dados privados que requerem login do Instagram, isso é explicitamente proibido e você poderá enfrentar suspensão da conta e, em casos piores, ações judiciais. Mesmo para dados públicos, você deve garantir um método legal de extração.

Para extrair dados do Instagram legalmente, você pode usar as APIs fornecidas pelo Instagram. Estas incluem a Instagram Graph API e a Instagram Basic Display API.

A Graph API permite gerenciar e extrair dados sobre contas comerciais e de criadores. Já a Basic Display API oferece acesso somente leitura a informações básicas do usuário. Ambas as APIs aderem às políticas do Instagram em relação à extração de dados, portanto, usá-las para extrair dados do Instagram é totalmente legal.

No entanto, se você usar APIs não públicas ou meios ilícitos que acessam a plataforma sem permissão prévia e muitas vezes disfarçam o scraper para parecer um usuário comum, isso caracteriza extração não autorizada e viola os Termos de Serviço do Instagram.

Portanto, antes de começar a extrair dados do Instagram, reflita: "O Instagram permite a extração de dados?" e tome cuidado ao fazê-lo.

Quais Dados do Instagram Você Pode Extrair Facilmente?

Antes de mostrarmos como extrair dados do Instagram, vamos primeiro descobrir quais dados podem ser coletados legalmente da plataforma. A extração legal de dados web do Instagram pode te dar acesso a estas três categorias:

  • Hashtags: Você pode pegar as fotos e vídeos com melhor desempenho ou recentes que estão marcados com uma hashtag específica na legenda.
  • Perfis: Você pode obter dados do perfil, como postagens, quantidade de mídia e contagem de seguidores/seguidos.
  • Postagens: Você pode obter métricas como contagem de comentários, curtidas, ID do perfil, data de publicação e URL.

3 Formas de Extrair Dados do Instagram

Três formas de Extrair Dados do Instagram: Escolha a ideal para você!

Extração usando a API do Instagram:

Se você busca um método seguro e oficial, a API do Instagram é a melhor opção. Porém, antes de começar, confira se cumpre os requisitos:

  • Uma conta comercial ou de criador no Instagram.
  • Uma página do Facebook vinculada à conta comercial/criador do Instagram.
  • Uma conta de desenvolvedor do Facebook para acessar a Instagram Graph API.
  • Um aplicativo registrado no Facebook com configurações mínimas.

Pronto? Então vamos aos próximos passos:

Adicionar Funcionalidade de Login do Facebook:

Navegue até o painel do seu aplicativo do Facebook e clique no botão "Produto +" no painel do lado esquerdo da janela. A partir daí, adicione o produto "Login do Facebook". Por enquanto, não altere as configurações padrão desse produto e deixe-as como estão.

No passo seguinte, você precisará implementar o Login do Facebook em seu aplicativo utilizando a documentação oficial do Facebook Login. Certifique-se de que seu processo de login solicite as seguintes duas permissões básicas:

[Fonte da imagem]


Gerando o Token de Acesso:

Para realizar ações na conta do Instagram a partir do painel do aplicativo, você precisa de um token de acesso do usuário. Encontre o menu suspenso "Usuário/Página" no lado direito do painel e selecione "Obter Token de Acesso do Usuário".

Um pop-up aparecerá informando que um aplicativo (neste caso, o seu) está solicitando as permissões mencionadas anteriormente. Basta pressionar o botão "Continuar" ou "OK" e o Token de Acesso do Usuário será exibido no campo "Token de Acesso" do seu painel.

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

Agora, usando o Token de Acesso do Usuário, vamos executar algumas consultas básicas na conta do Instagram.

1. Obter ID da Página do Facebook:

Primeiro, precisamos do ID da Página do Facebook conectada à conta comercial do Instagram. Para isso, execute a seguinte consulta GET no painel.

"https://graph.facebook.com/v19.0/me/accounts?access_token={access-token}"

Isso retornará o nome e o ID das Páginas do Facebook associadas ao usuário do Facebook. A saída será parecida com isso:

{
"data": [
{
"access_token": "EAAJjmJ...",
"category": "App Page",
"category_list": [
{
"id": "2301",
"name": "App Page"
}
],
"name": "Metricsaurus",
"id": "134895793791914",
"tasks": [
"ANALYZE",
"ADVERTISE",
"MODERATE",
"CREATE_CONTENT",
"MANAGE"
]
}
]
}

Copie o ID da página que está conectada à conta comercial do Instagram.

2. Obter ID da Conta Comercial do Instagram.

Usando o ID do Facebook, digite o seguinte script na barra de comandos e pressione Enter.

134895793791914?fields=instagram_business_account

Você verá a seguinte saída.

{
"instagram_business_account": {
"id": "17841405822304914" // Connected IG User ID
},
"id": "134895793791914" // Facebook Page ID
}


3. Obter Objetos de Mídia da Conta do Instagram:

Copie o ID do Instagram da saída e execute o seguinte script para obter os IDs de todas as histórias atualmente publicadas na Conta Comercial do Instagram.

17841405822304914/stories

Cada história na saída terá um ID associado.

{
"data": [
{
"id": "17918195224117851"
},
{
"id": "17895695668004550"
},
{
"id": "17899305451014820"
},
{
"id": "17896450804038745"
},
{
"id": "17881042411086627"
},
{
"id": "17869102915168123"
}
]
}

Este foi apenas um exemplo! Com a API do Instagram Graph, você também pode obter outras informações, como metadados de usuários e realizar pesquisas de hashtags.
Agora, vamos ver outra forma de extrair dados do Instagram.

Extraindo Dados do Instagram com Scrappers sem Código

Para quem não tem experiência em programação, o método anterior pode ser complicado de entender e executar. Mas não se preocupe! Existem scrapers do Instagram que fazem o trabalho sem exigir nenhum código.

Extraindo Dados do Instagram com Apify.

Acesse a página do Apify Instagram Scraper:

Abra a página do Apify Instagram Scraper e clique no botão "Experimente Grátis".

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

Cadastre-se no Apify usando seu endereço de e-mail ou contas do Google ou Github. Isso o levará ao console Apify, onde ocorre a extração real de dados do Instagram.

Colete as URLs dos perfis do Instagram que você deseja analisar:

Abra o aplicativo ou site do Instagram, procure os perfis que deseja extrair informações e copie as URLs deles. No painel do Apify, cole cada URL separadamente nos campos indicados. Se tiver várias URLs, clique no botão "Bulk Edit" para inserir todas de uma vez.

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

A Apify oferece três opções de raspagem para as URLs fornecidas: você pode extrair publicações e comentários ou obter detalhes diversos dos perfis.

Clique em "Salvar e Iniciar":

Mantenha o restante das configurações inalteradas e pressione "Salvar e Iniciar" para executar o scraper. O resultado será uma tabela com o mesmo número de linhas que as URLs de perfil fornecidas, e várias colunas contendo metadados do perfil, como biografia, número de seguidores, número de posts, número de Reels, ID da conta e status de verificação, entre outros.

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

Salvar os resultados:

Pressione o botão "Exportar Resultados" e selecione o formato de arquivo desejado na janela pop-up (CSV, Excel, JSON, etc.). Você também pode limpar os dados selecionando ou omitindo campos que não necessita. Em seguida, poderá baixar os resultados, visualizá-los em uma nova aba ou compartilhá-los através de um link.

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados

Fazendo Scrapping do Instagram Usando Linguagem de Programação

Criar seu próprio scraper do Instagram pode ser a solução mais eficiente se suas necessidades forem atípicas e você possuir conhecimento sólido de programação ou contar com um desenvolvedor na equipe. É possível fazer isso utilizando qualquer linguagem de programação em conjunto com uma estrutura de extração de dados web.

Este guia demonstra como realizar a extração de dados do Instagram usando Python e Selenium, uma estrutura de automação de navegador.

Importando Bibliotecas Essenciais:

Para começar, importe as bibliotecas básicas, incluindo Selenium, seu webdriver e Selenium-Stealth para evitar detecção.

from selenium import webdriver
from selenium.webdriver.common.by import By
from pprint import pprint
import json
from selenium_stealth import stealth

Vamos usar a biblioteca de impressão para formatar a saída e deixar o resultado mais fácil de ler.

Coletando Nomes de Usuário do Instagram:

Crie uma lista e adicione os nomes de usuário dos perfis do Instagram que deseja analisar.

usernames = ["natureismetal", "miteuniversity", "samstailor", "therock"]
proxy = "server:port"
output = {}

Teremos um dicionário para guardar os resultados, chamado de "output".

Definindo a Função Principal:

A função principal percorrerá a lista de nomes de usuário um por um e executará a função de scraping para cada um deles.

def main():
for username in usernames:
scrape(username)


Definindo uma função para gerenciar configurações do navegador:

Esta função ajustará as configurações do navegador antes de cada requisição de scraping para aumentar o anonimato e evitar a detecção pelo Instagram. Essas alterações incluem a rotação de proxies, a configuração das opções do Selenium-Stealth e a criação de um User-Agent artificial.

def prepare_browser():
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
chrome_options.add_argument("start-maximized")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options= chrome_options)
stealth(driver,
user_agent= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36',
languages= ["en-US", "en"],
vendor= "Google Inc.",
platform= "Win32",
webgl_vendor= "Intel Inc.",
renderer= "Intel Iris OpenGL Engine",
fix_hairline= False,
run_on_insecure_origins= False,
)
return driver


Definindo uma função para a Extração de Dados:

A função scrape(), chamada na função principal, recebe como argumento um único nome de usuário do Instagram e cria um ponto de extremidade de perfil que usaremos para enviar uma solicitação usando o navegador Chrome, criado por meio da função prepare_browser().

Também verificaremos o status da solicitação. Se sua solicitação foi redirecionada para a página de login, isso significa que a solicitação falhou. Por outro lado, se não houver uma sequência de login, a solicitação foi bem-sucedida e o resultado será analisado como JSON e enviado à função parse_data() junto com o nome de usuário.

def scrape(username):


url = f'https://instagram.com/{username}/?__a=1&__d=dis'
chrome = prepare_browser()
chrome.get(url)
print (f"Attempting: {chrome.current_url}")


if "login" in chrome.current_url:
print ("Failed/ redir to login")
chrome.quit()


else:
print ("Success")
resp_body = chrome.find_element(By.TAG_NAME, "body").text
data_json = json.loads(resp_body)
user_data = data_json['graphql']['user']
parse_data(username, user_data)
chrome.quit()


Definindo a função parse_data():

Esta função analisa os dados JSON no argumento user_data para obter os campos de dados desejados. Neste exemplo, estamos extraindo o nome completo do usuário, a categoria da conta, a contagem de seguidores e as legendas das postagens.

def parse_data(username, user_data):
captions = []


if len(user_data['edge_owner_to_timeline_media']['edges']) > 0:
for node in user_data['edge_owner_to_timeline_media']['edges']:
if len(node['node']['edge_media_to_caption']['edges']) > 0:
If node['node']['edge_media_to_caption']['edges'][0]['node']['text']:
captions.append(

node['node']['edge_media_to_caption']['edges'][0]['node']['text'])

output[username] = {
'name': user_data['full_name'],
'category': user_data['category_name'],
'followers': user_data['edge_followed_by']['count'],
'posts': captions,

}


Escrevendo o código principal:

O código principal inicia o processo de extração de dados, armazena as informações na variável output e chama a função pprint() para exibi-las de forma organizada.

if __name__ == '__main__':
main()
pprint(output)


Evitando detecção no scraping do Instagram com o AdsPower Antidetect Browser:

O Instagram é rigoroso em relação ao scraping e oferece acesso limitado aos dados públicos em sua plataforma. Isso inclui informações básicas como ID do perfil, número de seguidores, curtidas e comentários. Explorar dados mais profundos exige login, o que viola as políticas do Instagram e pode levar à suspensão da conta.

É aqui que o AdsPower se torna útil, ajudando você a manter um perfil discreto ao extrair dados do Instagram que possam violar as políticas da plataforma. O AdsPower usa técnicas antidetecção, como rotação de IP e limitação de taxa, para driblar as medidas anti-scraping.

Portanto, da próxima vez que você estiver extraindo dados do Instagram usando uma ferramenta sem código ou APIs não oficiais do Instagram, certifique-se de usar o navegador antidetecção AdsPower para evitar a detecção.

Conclusão

O Instagram permite a extração de dados apenas para informações públicas em sua plataforma, para as quais oferece duas APIs. No entanto, essas APIs oferecem um nível muito básico de extração, sem permitir que você obtenha dados realmente relevantes.

Isso nos deixa com scrapers web de terceiros ou com a criação de seu próprio scraper usando linguagens de programação. No entanto, extrair dados do Instagram usando esses métodos não oficiais tem chances de detecção, portanto, certifique-se de usar o navegador antidetecção AdsPower para proteção adicional.

AdsPower

Melhor navegador com vários logins para qualquer setor

Como Fazer Scrape no Instagram? 3 Maneiras de Maximizar Seus Resultados