Como raspar dados do Youtube usando Python

Publicados: 2019-05-29
Índice mostrar
Por que raspar dados do Youtube?
1. Encontre as palavras-chave mais curtidas
2. Comparar hashtags
3. Encontre os canais mais populares
4. Acompanhar a popularidade dos canais
5. Gravação de curtidas, desgostos e visualizações em vídeos
Vamos começar com o código:
O código do rastreador do YouTube explicou:
Quais pontos de dados você pode extrair do Youtube?
TÍTULO
NOME DO CANAL
NÚMERO DE VISUALIZAÇÕES
CURTIS
NÃO GOSTA
NÚMERO DE ASSINATURAS
HASHTAGS
Conclusão
Precisa de ajuda para extrair dados da web?

O YouTube emergiu como o vencedor claro quando se trata de sites de compartilhamento de vídeos e, embora seja avaliado em mais de US$ 160 bilhões, o número de pessoas que ganham a vida através do site também é enorme. Esses criadores de conteúdo se unem ao programa de parceria do YouTube e, monetizando seu conteúdo, ganham muito dinheiro por meio de anúncios.

Por que raspar dados do Youtube?

Os dados do YouTube podem ser úteis para uma ampla variedade de casos de uso, como:

1. Encontre as palavras-chave mais curtidas

Digamos que você faça uma pesquisa para encontrar os principais vídeos exibidos no YouTube para algumas palavras específicas. Agora, se você raspar os gostos, desgostos, visualizações e títulos de cada um desses vídeos, poderá fazer uma lista de palavras-chave que, quando inseridas em seus títulos do YouTube, podem gerar uma receita melhor.

2. Comparar hashtags

Ao comparar curtidas e visualizações em vídeos com hashtags específicas, você pode ter uma ideia melhor sobre quais hashtags usar em seu vídeo para torná-lo mais popular ou entender quais hashtags combinam melhor com o título do seu vídeo.

3. Encontre os canais mais populares  

Extrair os principais vídeos do YouTube pode ajudá-lo a criar um gráfico de frequência dos nomes dos canais que ocorrem, permitindo que você encontre os principais canais que as pessoas gostam. Isso, por sua vez, também ajudaria você a entender quais tópicos são mais populares entre os espectadores do YouTube.

4. Acompanhar a popularidade dos canais

Ao extrair os dados de vídeos recém-carregados de um canal específico do YouTube, você poderá descobrir se a popularidade de um canal está aumentando ou diminuindo ou está estagnada.

5. Gravação de curtidas, desgostos e visualizações em vídeos

Você pode criar um gráfico com o tempo no eixo x e gostos, desgostos ou visualizações no eixo y, extraindo dados desses vídeos em intervalos de tempo regulares.

Vamos começar com o código:

Como já explicamos o processo de instalação e inicialização em artigos anteriores "Como extrair dados de" como este , esperamos que você esteja pronto com essas etapas concluídas.

Para executar o código, use o comando python e insira um URL de vídeo do YouTube quando solicitado.

extrair dados do youtube
Fig: Executando o código do shell script.

Copie o código abaixo em um arquivo e nomeie-o como youtubeDataExtractor.py (embora você possa dar qualquer nome de arquivo, desde que termine com '.py').

[linguagem de código=”python”]

#!/usr/bin/python
# -*- codificação: utf-8 -*-

importar urllib.request
importar urllib.parse
importar urllib.error
de bs4 importe BeautifulSoup
importar ssl
importar json
importação ast
importar json
importar SO
de urllib.request solicitação de importação, urlopen

# Para ignorar erros de certificado SSL

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

# Entrada do usuário

url = input('Digite o URL do vídeo do Youtube- ')

# Fazendo o site acreditar que você está acessando usando um navegador mozilla

req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
página da web = urlopen(req).read()

# Criando um objeto BeautifulSoup da página html para fácil extração de dados.

sopa = BeautifulSoup(página da web, 'html.parser')
html = sopa.prettify('utf-8')
video_details = {}
other_details = {}

for span em soup.findAll('span',attrs={'class': 'watch-title'}):
video_details['TITLE'] = span.text.strip()

para script em soup.findAll('script',attrs={'type': 'application/ld+json'}):
channelDesctiption = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = channelDesctiption['itemListElement'][0]['item']['name']

para div em soup.findAll('div',attrs={'class': 'watch-view-count'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()

para botão em soup.findAll('button',attrs={'title': 'I like this'}):
video_details['LIKES'] = button.text.strip()

para botão em soup.findAll('button',attrs={'title': 'Não gosto disto'}):
video_details['DISLIKES'] = button.text.strip()

for span in soup.findAll('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()

hashtag = []
for span em soup.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'}):
for a em span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
hashtags.append(a.text.strip())
video_details['HASH_TAGS'] = hashtags

com open('output_file.html', 'wb') como arquivo:
arquivo.write(html)

com open('data.json', 'w', encoding='utf8′) como outfile:
json.dump(video_details, outfile, assurance_ascii=False,indent=4)

print('———-A extração dos dados foi concluída. Verifique o arquivo json.———-')
[/código]

Depois de executar o código, você encontrará um JSON criado em seu diretório atual, com o nome data.json. Executamos o código de alguns videoclipes populares e aqui estão os JSONs associados a eles-

1. Thunder por Imagine Dragons –

[linguagem de código=”python”]

{
“TÍTULO”: “Imagine Dragões – Trovão”,
“CHANNEL_NAME”: “ImagineDragonsVEVO”,
“NUMBER_OF_VIEWS”: “1.182.556.781 visualizações”,
“CURTIR”: “6.693.559”,
“NÃO GOSTA”: “337.823”,
“NUMBER_OF_SUBSCRIPTIONS”: “17M”,
“HASH_TAGS”: []
}

[/código]

2. Em seus sentimentos por Drake

[linguagem de código=”python”]
{
“TITLE”: “Drake – In My Feelings (Lyrics, Audio) “Kiki Do you love me””,
“CHANNEL_NAME”: “Unidade Especial”,
“NUMBER_OF_VIEWS”: “278.121.686 visualizações”,
“Curtidas”: “2.407.688”,
“NÃO GOSTA”: “114.933”,
“NUMBER_OF_SUBSCRIPTIONS”: “614K”,
“HASH_TAGS”: [
“#InMyFeelings”,
“#Drake”,
"#Escorpião"
]
}
[/código]

O código do rastreador do YouTube explicou:

Como de costume, primeiro raspamos o código HTML da página da web e o salvamos em um arquivo em nosso diretório local, para que possamos analisá-lo e encontrar os pontos de dados que podem ser extraídos facilmente e que também seriam valiosos. A maior parte do estudo de pontos de dados na página HTML deve ser feito manualmente, procurando por palavras-chave ou valores específicos e descobrindo onde eles ocorrem.

Usamos o BeautifulSoup (BS4) para extrair dados de locais específicos no código HTML -

  1. O elemento do tipo span com classe como 'watch-title' é onde você pode encontrar o título do vídeo.
  2. O elemento de script que possui um tipo de 'application/ld+json' contém o nome do canal.
  3. O elemento div com a classe watch-view-count ajudaria você a obter o número de visualizações desse vídeo específico do YouTube.
  4. O elemento de botão com o título 'Gosto disso' tem a contagem do número de curtidas nesse vídeo específico.
  5. Semelhante ao ponto acima, o elemento de botão com o título 'Não gosto disso' tem a contagem do número de não gostos em um determinado vídeo.
  6. O elemento span com a classe 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' é aquele do qual você pode extrair o número de inscritos no canal que enviou esse vídeo específico.
  7. Encontrar as hashtags associadas a um determinado vídeo é um pouco mais complicado do que os outros pontos de dados. Primeiro, você deve extrair todos os spans com a classe 'standalone-collection-badge-renderer-text' e, a partir daí, é preciso extrair todas as a-tags com a classe 'yt-uix-sessionlink'. Ao extrair o texto de todas as a-tags, em um array, você poderá criar uma lista de hashtags. Esse array pode ser adicionado ao resultado json sob uma chave específica chamada 'HASH_TAGS', para obter as informações em um formato estruturado no resultado final json.

Quais pontos de dados você pode extrair do Youtube?

Usando o código fornecido acima, você pode extrair determinados pontos de dados de qualquer vídeo do YouTube, desde que possua o URL deles. Apenas o campo hashtags pode estar ausente em determinados vídeos, pois não é um campo obrigatório nas páginas de vídeos do YouTube. Os pontos de dados que podem ser raspados são os seguintes:

TÍTULO

O ponto de dados mais importante é aquele que estamos extraindo no início. O título do vídeo contém muita informação e é de extrema importância, sem a qual todos os outros pontos de dados não fariam nenhum sentido.

NOME DO CANAL

Logo após o título, o nome do canal é importante para associar o título ao criador, ou seja, quem criou o conteúdo. No YouTube, os vídeos são associados pelos nomes dos canais e não pelos criadores porque, em muitos casos, mais de uma pessoa trabalha nos vídeos de um único canal.

NÚMERO DE VISUALIZAÇÕES

A métrica mais simples para entender o alcance de um vídeo é encontrar o número de visualizações que ele recebeu. Essa também é a métrica mais importante associada a um vídeo do YouTube e, de várias maneiras, determina quanta receita o criador do vídeo fará.

CURTIS

As curtidas em um vídeo do YouTube são simplesmente a porcentagem de espectadores que gostaram do vídeo o suficiente para clicar no botão de polegar para cima abaixo de um vídeo.

NÃO GOSTA

Semelhante ao ponto de dados acima, o número de não gostos determinaria o número de cliques no botão não gostar de um vídeo.

NÚMERO DE ASSINATURAS

Enquanto curtidas, desgostos e visualizações mostram a popularidade de um único vídeo do YouTube, o número de inscrições dá uma ideia mais precisa sobre a popularidade do canal do YouTube. Para canais do YouTube, não temos outra métrica. O número de inscrições é o único ponto de dados e quanto maior, mais popular é o canal do YouTube em questão.

HASHTAGS

Hashtags se tornaram uma maneira popular de tornar seu conteúdo pesquisável em diferentes mídias. Sejam postagens no Facebook ou fotos no Instagram, as pessoas estão usando hashtags com diferentes tipos de conteúdo online hoje para que diferentes tipos de conteúdo possam ser associados. Essa é a razão pela qual 'hashtags de tendência' é uma coisa hoje.

Conclusão

Embora o código fornecido possa extrair apenas alguns pontos de dados específicos de uma página de vídeo do YouTube, explorar páginas HTML de diferentes páginas do YouTube pode ajudá-lo a encontrar mais pontos de dados que ocorrem em elementos HTML semelhantes. A raspagem da Web não possui regras rígidas e rápidas, pois os próprios sites continuam mudando. Portanto, aprender quais dados raspar e como raspar é algo que pode ser obtido apenas com a experiência ao raspar diferentes páginas da Web com diferentes formatos de dados.


Precisa de ajuda para extrair dados da web?

Obtenha dados limpos e prontos para uso de sites para aplicativos de negócios por meio de nossos serviços de web scraping.

Ops! Nós não conseguimos localizar seu formulário.

Isenção de responsabilidade: O código fornecido neste tutorial é apenas para fins de aprendizado. Não somos responsáveis ​​pela forma como ele é usado e não assumimos qualquer responsabilidade por qualquer uso prejudicial do código-fonte.