Como raspar o TikTok para obter informações de vídeo?

Expert Network Defense Engineer
O TikTok é uma das principais plataformas de mídia social com tráfego massivo. Imagine quantos dados valiosos o TikTok pode fornecer!
Neste artigo, explicaremos como raspar informações de vídeo do TikTok. Além disso, demonstraremos como raspar esses dados por meio da API oculta do TikTok ou conjuntos de dados JSON incorporados. Vamos começar!
Por que raspar o TikTok?
O TikTok possui enorme engajamento social, tornando possível coletar vários insights para diferentes casos de uso:
Análise de Tendências
As tendências no TikTok mudam rapidamente, tornando difícil acompanhar as preferências mais recentes dos usuários. A raspagem do TikTok captura efetivamente essas mudanças de tendência e seu impacto, permitindo estratégias de marketing aprimoradas alinhadas com os interesses do usuário.
Geração de Leads
A raspagem de dados do TikTok permite que as empresas identifiquem oportunidades de marketing e novos clientes. Isso pode ser alcançado identificando influenciadores cujas características demográficas de seguidores correspondem a setores de negócios relevantes.
Análise de Sentimento
A raspagem da web do TikTok serve como uma excelente fonte para coletar dados de texto de comentários, que podem ser analisados por meio de modelos de sentimento para coletar opiniões sobre tópicos específicos.
Desafios da Raspagem do TikTok
A raspagem do TikTok refere-se ao processo de extração de dados publicamente disponíveis do TikTok. Embora possa envolver atividades manuais e automatizadas, geralmente é um processo automatizado executado por rastreadores da web ou scripts personalizados que interagem com a API (Interface de Programação de Aplicativos) do TikTok.
Os dados podem incluir vários tipos de informações, como:
- Perfis de Usuário: Informações sobre usuários do TikTok, incluindo nomes de perfil, biografias e contagens de seguidores.
- Dados Demográficos: Dados relacionados às características do usuário, como idade, sexo, localização e interesses.
- Vídeos: Pequenos vídeos publicados pelos usuários, incluindo legendas, curtidas, comentários, compartilhamentos e visualizações.
- Hashtags: Palavras-chave ou frases usadas para categorizar o conteúdo do TikTok.
- Comentários: Respostas de texto enviadas pelos usuários, incluindo conteúdo de texto, carimbos de data/hora e contagens de curtidas.
- Métricas de Engajamento: Informações sobre como os usuários interagem com o conteúdo (curtidas, comentários, compartilhamentos, visualizações).
- Tendências: Dados sobre tópicos, temas ou estilos populares no TikTok.
Como Criar seu Raspador de TikTok?
Vamos simplificar as coisas! Agora começamos formalmente o processo passo a passo de raspar dados de vídeo do TikTok. É hora de experimentar o tremendo valor que o TikTok tem a oferecer!
Antes de iniciar o processo de raspagem real, vamos primeiro examinar juntos a estrutura do conteúdo de vídeo do TikTok. Isso nos permitirá localizar as informações necessárias de forma mais eficiente e concluir a extração de dados de forma mais direta.
Quais Dados Podemos Raspar dos Vídeos?
- URL do Vídeo
- Descrição do Vídeo
- Nome da Música
- Data de Lançamento
- Tags
- Visualizações
- Contagem de Curtidas
- Contagem de Comentários
- Contagem de Compartilhamentos
- Contagem de Favoritos


Análise da Página do Vídeo
Para tornar a raspagem de dados mais intuitiva, analisaremos o seguinte vídeo como referência: https://www.tiktok.com/@petervufriends/video/7476546872253893934.
Nós protegemos firmemente a privacidade do site. Todos os dados neste blog são públicos e são usados apenas como demonstração do processo de rastreamento. Não salvamos nenhuma informação e dados.
Como Localizar os Dados que Precisamos?
Vamos mergulhar fundo na estrutura HTML! Aqui está o que precisamos extrair deste vídeo:
Contagem de Visualizações
A contagem de visualizações geralmente é exibida de forma proeminente na página do vídeo. Basta abrir as ferramentas do desenvolvedor e localizar a tag relevante:
Python
<strong data-e2e="video-views" class="video-count css-dirst9-StrongVideoCount e148ts222">281.4K</strong>

Descrição e Tags do Vídeo
Como observamos inicialmente, a descrição e as tags do vídeo geralmente aparecem na mesma seção. No entanto, alguns vídeos podem não ter descrições ou tags.

- A descrição do vídeo está dentro de uma
<span>
com uma classe única:css-j2a19r-SpanText
. - As tags de vídeo são separadas, mas compartilham o mesmo atributo:
data-e2e="search-common-link"
.
Título da Música

Data de Upload

A data é isolada como o último <span>
dentro de um elemento pai contendo o atributo: data-e2e="browser-nickname"
.
Contagens de Curtidas, Comentários e Favoritos
Essas métricas geralmente aparecem juntas e você pode encontrá-las na mesma coleção:

Para simplificar seu processo de raspagem, aqui está um resumo dos seletores essenciais:
- URL do Vídeo:
<meta property="og:url">
- Descrição do Vídeo:
['span.css-j2a19r-SpanText']
- Título da Música:
['.css-pvx3oa-DivMusicText']
- Data de Upload:
['span[data-e2e="browser-nickname"] span:last-child']
- Tags:
[data-e2e="search-common-link"]
- Contagem de Visualizações:
[data-e2e="video-views"]
- Contagem de Curtidas:
[data-e2e="like-count"]
- Contagem de Comentários:
[data-e2e="comment-count"]
- Contagem de Compartilhamentos:
[data-e2e="share-count"]
- Contagem de Favoritos:
[data-e2e="undefined-count"]
Parabéns! Agora você entende completamente como localizar os dados necessários. Em seguida, vamos construir oficialmente o raspador!
Código de Raspagem Completo
Pulando explicações desnecessárias - aqui está o código de raspagem pronto para uso para implementação imediata:
Python
from playwright.async_api import async_playwright
import asyncio, random, json, logging, time, os, yt_dlp
from urllib.parse import urlparse
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('tiktok_scraper.log'),
logging.StreamHandler()
]
)
class TikTokScraper:
def __init__(self):
self.DOWNLOAD_VIDEO = True
self.SAVE_DIR = "downloaded_videos"
self.USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
self.VIEWPORT = {'width': 1280, 'height': 720}
self.TIMEOUT = 300 # 5 minute timeout
async def random_sleep(self, min_seconds=1, max_seconds=3):
"""Random Delay"""
delay = random.uniform(min_seconds, max_seconds)
logging.info(f"Sleeping for {delay:.2f} seconds...")
await asyncio.sleep(delay)
async def handle_captcha(self, page):
"""Handling verification codes"""
try:
captcha_dialog = page.locator('div[role="dialog"]')
if await captcha_dialog.count() > 0 and await captcha_dialog.is_visible():
logging.warning("CAPTCHA detected. Please solve it manually.")
await page.wait_for_selector('div[role="dialog"]', state='detached', timeout=self.TIMEOUT*1000)
logging.info("CAPTCHA solved. Resuming...")
await self.random_sleep(0.5, 1)
except Exception as e:
logging.error(f"Error handling CAPTCHA: {str(e)}")
async def extract_video_info(self, page, video_url):
"""Extract video details"""
logging.info(f"Extracting info from: {video_url}")
try:
await page.goto(video_url, wait_until="networkidle")
await self.random_sleep(2, 4)
await self.handle_captcha(page)
# Waiting for key elements to load
await page.wait_for_selector('[data-e2e="like-count"]', timeout=10000)
video_info = await page.evaluate("""() => {
const getTextContent = (selectors) => {
for (let selector of selectors) {
const element = document.querySelector(selector);
if (element && element.textContent.trim()) {
return element.textContent.trim();
}
}
return 'N/A';
};
const getTags = () => {
const tagElements = document.querySelectorAll('a[data-e2e="search-common-link"]');
return Array.from(tagElements).map(el => el.textContent.trim());
};
return {
likes: getTextContent(['[data-e2e="like-count"]', '[data-e2e="browse-like-count"]']),
comments: getTextContent(['[data-e2e="comment-count"]', '[data-e2e="browse-comment-count"]']),
shares: getTextContent(['[data-e2e="share-count"]']),
bookmarks: getTextContent(['[data-e2e="undefined-count"]']),
views: getTextContent(['[data-e2e="video-views"]']),
description: getTextContent(['span.css-j2a19r-SpanText']),
musicTitle: getTextContent(['.css-pvx3oa-DivMusicText']),
date: getTextContent(['span[data-e2e="browser-nickname"] span:last-child']),
author: getTextContent(['a[data-e2e="browser-username"]']),
tags: getTags(),
videoUrl: window.location.href
};
}""")
logging.info(f"Successfully extracted info for: {video_url}")
return video_info
except Exception as e:
logging.error(f"Failed to extract info from {video_url}: {str(e)}")
return None
def download_video(self, video_url):
"""Download Video"""
if not os.path.exists(self.SAVE_DIR):
os.makedirs(self.SAVE_DIR)
ydl_opts = {
'outtmpl': os.path.join(self.SAVE_DIR, '%(id)s.%(ext)s'),
'format': 'best',
'quiet': False,
'no_warnings': False,
'ignoreerrors': True
}
try:
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(video_url, download=True)
filename = ydl.prepare_filename(info)
logging.info(f"Video successfully downloaded: {filename}")
return filename
except Exception as e:
logging.error(f"Error downloading video: {str(e)}")
return None
async def scrape_single_video(self, video_url):
"""Scrape the single short"""
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
context = await browser.new_context(
viewport=self.VIEWPORT,
user_agent=self.USER_AGENT,
)
page = await context.new_page()
result = {}
try:
# Extract shorts information
video_info = await self.extract_video_info(page, video_url)
if not video_info:
raise Exception("Failed to extract video info")
result.update(video_info)
# Download TikTok shorts
if self.DOWNLOAD_VIDEO:
filename = self.download_video(video_url)
if filename:
result['local_path'] = filename
except Exception as e:
logging.error(f"Error scraping video: {str(e)}")
finally:
await browser.close()
return result
def save_results(self, data, filename="tiktok_video_data.json"):
"""Save the results to a JSON file"""
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
logging.info(f"Results saved to {filename}")
async def main():
# Initialize the crawler
scraper = TikTokScraper()
# Target TikTok short's URL
video_url = "https://www.tiktok.com/@petervufriends/video/7476546872253893934" # Just as an reference
# scrape the short
video_data = await scraper.scrape_single_video(video_url)
# save the scraping result
if video_data:
scraper.save_results(video_data)
logging.info("\nScraping completed. Results:")
for key, value in video_data.items():
logging.info(f"{key}: {value}")
else:
logging.error("Failed to scrape video data")
if __name__ == "__main__":
asyncio.run(main())
Resultado da Raspagem

Obviamente, precisamos de programação e medidas complexas: definir atrasos, contornar o CAPTCHA, etc. para alcançar o rastreamento de dados. Então, como obter dados do TikTok rapidamente? Uma poderosa API de Raspagem de terceiros é a sua melhor escolha!
API de Raspagem: Colete Dados do TikTok Facilmente
Por que usar uma API para recuperar detalhes do produto?
1. Eficiência Aprimorada
A busca manual por dados de produtos é lenta e propensa a erros. A API permite a recuperação automática de informações de produtos, garantindo uma coleta de dados rápida e consistente.
2. Dados precisos e em tempo real
A API Scrapeless extrai dados diretamente das páginas de produtos, garantindo que as informações recuperadas estejam atualizadas e precisas. Isso evita erros causados por entrada manual atrasada ou fontes desatualizadas.
3. Aplicável a vários cenários de negócios
- Monitoramento de preços: Compare os preços dos concorrentes e ajuste as estratégias de preços.
- Rastreamento de estoque: Verifique a disponibilidade do produto para otimizar a gestão da cadeia de suprimentos.
- Análise de avaliações: Analise o feedback do cliente para melhorar produtos e serviços.
- Pesquisa de mercado: Identifique produtos populares e tome decisões comerciais informadas.
O que o Raspador do TikTok faz?
Este raspador de dados do TikTok é uma poderosa API não oficial do TikTok que fornece dados em larga escala do TikTok para seus próprios projetos de dados, relatórios de negócios e como base para novos aplicativos. Com este melhor raspador do TikTok, você pode obter:
- Todos os resultados da hashtag selecionada, incluindo detalhes: vídeos populares, carimbos de data/hora, visualizações, compartilhamentos, comentários e número de vídeos, etc.
- Todas as postagens do perfil de usuário selecionado, incluindo detalhes: nome, apelido, ID, biografia, seguidores/seguindo, reproduções, compartilhamentos e comentários, etc.
- Postagens de vídeo individuais com URLs de vídeo específicos.
- Dados relacionados a vídeo e música.
Raspagem de dados do TikTok usando API
Passo 1. Crie seu Token de API
Para começar, você precisará obter sua Chave de API no Painel Scrapeless:
- Faça login no Painel Scrapeless.
- Navegue até Gerenciamento de Chave de API.
- Clique em Criar para gerar sua Chave de API exclusiva.
- Depois de criada, basta clicar na Chave de API para copiá-la.

Passo 2. Entre na API do TikTok
- Clique em API de Raspagem em Para Dados
- Encontre o TikTok e insira

Passo 3. Configuração do parâmetro de solicitação
O ator do TikTok atualmente tem dois cenários de raspagem:
- Informações de pesquisa do TikTok: Raspe os resultados da pesquisa de vídeo para palavras-chave específicas.
- Informações do usuário do TikTok: Raspe as informações do perfil de um usuário especificado.
Haverá diferentes solicitações de ação em cada cenário. Você pode clicar na seta de dobramento para encontrar as informações de dados que precisa raspar com precisão. Tome como exemplo as informações de pesquisa do TikTok:

Você está pronto? Depois de entender as informações básicas, podemos oficialmente começar a raspar dados!
- Agora você só precisa concluir a configuração do parâmetro no lado esquerdo do ator de acordo com suas necessidades

- Depois de confirmar que tudo está correto, basta clicar em Iniciar Raspagem para obter facilmente os resultados da raspagem.

Obtenha os Dados do Vídeo do TikTok Agora!
A partir de agora, você deve ter um raspador funcionando que pode extrair dados do TikTok. Este é um ótimo começo, mas você definitivamente pode ir mais longe.
Se você está analisando tendências do TikTok, conduzindo pesquisas ou satisfazendo sua curiosidade por dados, agora você tem ferramentas poderosas para explorar o depósito de dados do TikTok sem muitas dores de cabeça.
A API de Raspagem Scrapeless o livra do incômodo de códigos complexos. Basta configurar alguns parâmetros para obter os dados mais recentes instantaneamente.
Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.