Como capturar uma página do youtube (html)?

0

Gostaria de tirar instantâneos de uma página do youtube (por exemplo, youtube.com/feed/trending)

Veja o que eu tento:

wget https://www.youtube.com/feed/trending --convert-links -E

O problema está nas miniaturas de vídeos. Youtube parece servir thumbnails de gif vazios (mais tarde substituídos por miniaturas reais? Não tenho certeza). No caso de tendências, vejo as miniaturas dos primeiros 6 vídeos, mas todo o resto está cinza / ausente. Isso é relacionado a javascript? Alguém conhece uma maneira confiável de capturar uma página da Web que funciona para páginas complicadas, como o youtube?

Obrigado

    
por Dimitris Andreou 02.03.2017 / 11:49

1 resposta

2

Não faço ideia do que você está usando, mas a maneira correta de captar o conteúdo da página é pelo API do YouTube . Você pode pesquisar por tendências . Ele lida com boas respostas JSON que você pode ajustar para o que quiser.

A própria página deles parece estar usando a API, ou talvez uma versão privada, mas os dados estão lá, são apenas adiados. Aqui está uma das imagens:

<img width="196" onload=";__ytRIL(this)" alt="" height="110" src="/yts/img/pixel-vfl3z5WfW.gif" data-thumb="https://i.ytimg.com/vi/Rqa9ph0cWSA/hqdefault.jpg?custom=true&amp;w=196&amp;h=110&amp;stc=true&amp;jpg444=true&amp;jpgq=90&amp;sp=68&amp;sigh=Vt5qpPXMxoaOiEG4ohSszdhmMJU" data-ytimg="1" >

Normalmente você poderia consertar essa imagem fazendo uma simples substituição de string, mas o Youtube alterará a ordem dos atributos entre as atualizações. Você precisa processar o HTML e converter o atributo data-thumb para src (e excluir uma carga de mais tags). E então você precisaria baixar esses (porque wget não terá) e então converter os links.

Mas isso é consideravelmente mais trabalho do que apenas usar a API do primeiro parágrafo.
Sem mencionar que o que você está fazendo é todo tipo de coisa contra os termos de serviço deles.

Então, minha resposta para isso é a mesma que a curta: Use a API.

Se você está realmente determinado a fazer isso da maneira errada, você pode manipular um navegador real, obtê-lo para carregar a página e, em seguida, despejar o DOM (o que é realmente renderização).

Na verdade, é bastante simples e serve a um propósito real para testar a automação e gerar capturas de tela de páginas, mas você ainda terá que passar por algo para converter os links e baixar os recursos. Você provavelmente está entediado de mim dizendo isso agora, mas, basta usar a API ☺

    
por Oli 02.03.2017 / 12:16

Tags