Duvida: WebScraping
Fala Pessoal, Eu estou fazendo um scraper de um site de animes, eu fiz tudo que preciso exceto 1 coisa, Eu preciso pegar o link do source do video porem o site usa o jw-player para poder mostrar o video, eu tentei usando JsDom.
Mas não obtive sucesso, uma solução foi usar o puppeteer. Mas ele é muito lento para fazer o processo, alguém tem uma ideia de como eu posso fazer o scraper e conseguir pegar o link de video do site sem usar algo como puppeteer para fazer isso?
Caso ajude:
- Site que estou fazendo o scraper
- Libs usadas: JsDom Axios
Você pode usar o Cheerio com o axios. Ele tem base no Jquery, então, fica bem fácil a manipulação dos dados que você deseja obter. Ah, o jw-player não deixa você colocar o link do vídeo em outro site e nem abrir o vídeo em uma nova aba... o máximo que ele faz -- até onde eu saiba -- é fazer o download do vídeo quando tenta abrir em outra aba.
Jack, ótima pergunta e web scraping é um tema que eu acho sensacional! Já fiz algumas boas coisas no passado e não sei porque, é uma sensação muito boa quando você consegue extrair um dado limpo de um HTML sujo.
Sobre sua dúvida, primeiro lugar se certifique que você pode fazer o que está fazendo, mas isso é com você.
Em segundo lugar, estava analisando o HTML e o negócio está bem amarrado, não achei nada fácil conseguir extrair o link final daquele HTML, ainda mais enviando todos os tokens necessários. De qualquer forma, achei interessante esse script aqui:
<script>
// TOOLTIP :D
$(function () {
$('[data-toggle="tooltip"]').tooltip()
});
var disqus_config = function () {
this.page.url = "https://betteranime.net/anime/legendado/made-in-abyss-retsujitsu-no-ougonkyou/episodio-05";
this.page.identifier = "route/anime/legendado/made-in-abyss-retsujitsu-no-ougonkyou/episodio-05";
this.page.title = "Made in Abyss: Retsujitsu no Ougonkyou - Episódio 05";
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://betteranime.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
function isEmpty(str) {
return (!str || str.length === 0 );
}
function changePlayerResolution(quality) {
let qualityString = [];
qualityString["480p"] = "bWIq5xEBeNmMaHKCa/USITVBLAN0Trj4C2N23vq9mvq0OcFjPeYIYeZ0PU1dJJEKYcOClkDn246ET5rP0YZN/CveSliD86FNzj19gVHCQmzfldIDfQ==";
qualityString["720p"] = "bWIq5xEBeNmMaHKCa/USITVBLAN0Trj4C2N23vq9gfq0OcFjPeYIYeZ0PU1dJJEKYcOClkDn246ET5rP0YZN/CveSliD86FNzj19gVHCQmzfldIDfQ==";
qualityString["1080p"] = "bWIq5xEBeNmMaHKCa/USITVBLAN0Trj4C2N23vq9j+v6eatOb5VLbPJZOVpKdM5bI9aLmkDo246BQ4fT0YdB4j2OEATI5LxOhXUpxEXIQ2vdl9MLNIEQ52U=";
const url="https://betteranime.net/changePlayer",info=qualityString[quality];$.ajax({method:"POST",data:{_token:"Hr0UbuXmSUSQDkScZCwiwjXUzvnmdGMQvx4BGEZv",info:info},url:url}).done(function(t){document.getElementById("playerFrame").src=t.frameLink,$("#qualitiesColumn button.active").removeClass("active"),$(`#quality${quality}`).addClass("active")});
}
</script>
Veja que o método changePlayerResolution()
possui algumas informações interessantes para você continuar a investigação.
vi um pessoal que usa selenium. Eu nunca usei :( Para coisas headless eu uso Puppeteer aqui um artigo bom https://brightdata.com/blog/proxy-101/puppeteer-vs-selenium