Como fazer web scraping com python em sites dinâmicos // O site muda toda hora
72.36k views3633 WordsCopy TextShare
Codifike
Web scraping é uma coleta de dados da web, de sites, onde usamos scripts e programas para coletar o...
Video Transcript:
Eu já queria que fazer webscreping um site que ficava mudando os elementos a cada momento é difícil né mas dá para fazer quer saber como chega mais que eu te ligo Fala galera beleza Fabrício Matos aqui no canal codifique e hoje eu vou estar mostrando para vocês como a gente consegue trabalhar para fazer um web scraping e no site que fica mudando os elementos as tags a cada momento ou seja de hora em hora ou seja dia a dia é complicado é difícil só que tem uma maneira da gente conseguir trabalhar desse jeito e é isso que eu vou estar mostrando nesse vídeo aqui para vocês bora vem comigo próprio sol então aqui ó estou utilizando hoje o pai Charme gosto muito do pai Charme É principalmente porque ele faz aquela parte de isolamento da do ambiente virtual mas você pode estar utilizando a ideia que você preferir Então vamos lá vou criar um novo projeto a Project ouvir aqui eu vou botar o nome dele de ir WEB scraping OK vou dar um cliente enquanto isso eu vou tomar um cafezinho é perfeito criou aqui para gente então agora vem aqui botão direito em um pai tão fácil eu vou chamar ele de ir scrap o show aumento pouquinho acha que é um pouquinho ficava bom para vocês visualizarem perfeito Então vamos lá primeira coisa que a gente vai tá fazendo aqui vamos importar as nossas bibliotecas toma da une porte a biblioteca abre quests o from PS4 Import a beautiful sup se importe RR se importe Opa importa real Import pandas e é experiência Import Messi são Julho Até que a gente vai tá utilizando aqui você pode vir aqui no terminal e ir dar o comando por exemplo pe pe o meu terminal tomei descrição PIP install three quests e ele vai estar lá para você mas eu também vou querer mostrar para vocês como é que vocês podem instalar a biblioteca por dentro do pai Charme Ok então as outras eu vou deixar aqui e vou mostrar como é que a gente consegue instalar juliotex perfeito primeira coisa que a gente tem que fazer vamos voltar lá na página EA página que eu vou querer trabalhar essa página aqui do KaBuM eu vou tá querendo fazer as cueca ainda as cadeiras gamers perfeito só que o que que acontece a Kabum É uma dessas é desse sites dia ele simplesmente muda as tags nos nomes das classes das tags HTML de tempos em tempos e aí fica muito difícil para você colocar o nome fixo dentro do seu programa né porque ele vai estar alterando então que que a gente faz nesse caso a gente tem algumas técnicas que a gente consegue trabalhar é isso que a gente vai tá fazendo aqui agora então vou ver aqui algum botão direito vou inspecionar O Clone tá você pode utilizar o braço também que você quiser não tem problema nenhum e eu vou dar umas pressionada nesse elemento aqui ó ele tava cadeira Onde está o preço e onde está a descrição clica aqui ó para selecionar e vem aqui eu quero esse elemento todo aqui quem é esse cara aqui deixa eu ver aqui só tem um preço aqui inspiração toda aqui ó peguei tá vendo aqui é uma div aí dentro dele tem o nome da cadeira essas coisas todas mas ele é mais importante é isso aqui eu quero cresce é ter uma diva e tem uma trás e tem esse nome aqui ó esses e alguma coisa monte de letra product Card esse nome aqui na frente é esse nome que muda de tempos em tempos não fica muito difícil né você fazer a sua é o seu programa funcionará se o nome da classe e muda mas qual é a ideia que a ideia nós estamos utilizando o álibi né a biblioteca de Rex para podermos pegar um pedaço do nome da classe que se mantém e se vou e daqui o produto Card eles se mantêm ele não muda essa parte aqui da frente muda mas o próprio Card não então a gente pode utilizar esse nome aqui do prédio de card para nós estarmos procurando todas as divs que contenha product code OK É isso que a gente vai estar fazendo então quando você tiver a o site que mude o seu as suas tags HTML você tenta achar alguma o nome que você consiga identificar aquela terra que você quer trabalhar e você usa regex para isso perfeito então se eu fechar isso aqui ó eu pude a Kim cadeiras Gamer que a URL que a gente quer trabalhar ó e vou colocar aqui ó URL e vai ser essa era a gente vai trabalhar aqui a próxima o próximo comando que eu vou tá passando aqui aquele comando de headers que ele é muito importante para evitar problema de permissão para você não você não consegui acessar o site na hora que você dar um jet URL Por que que você use regras aqui para dizer para o para requisição é para dizer para o site que você tá se essa hora eu sou um confiável esse aqui é o meu navegador esse aqui é o meu usar a gente que você pode me deixar acessar o site aí Isso aqui é muito importante para você tá utilizando ai como é que eu pego o meu e usar gente bom você pode vir aqui ó in my user Agent e se digita aqui ó ele aparece aqui para você tá vendo Então é só copiar esse cara aqui aí você cola aqui perfeito Ok fechando aqui volta aqui deixando o site aqui daqui a pouco a gente vai tá trabalhando nele Ok então o que eu vou fazer aqui eu vou dizer para ele Ó site que eu quero fazer a requisição tão lequest. Net aí vou passar a URL, e vou passar o headers que esse regra que eu criei aqui ok que que eu vou fazer aqui agora porque é uma outra variável chamada super que vai estar recebendo o objeto do beautifulsoup então beautifulsoup o site ponto conta de pegar o conteúdo do site Viva e quero fazer o parceiro dele né o que que eu passo é transformar todo aquele site né de uma maneira aqui o programa entenda e coloque na nossa variável chamada super Então vou tá utilizando parte HTML5 parser perfeito só que ele tá reclamando aqui ó que a gente não tem a biblioteca do beautifulsoup nada do PS4 tá vendo tá todo vermelhinho aqui então como é que a gente faz clica em cima dele ó e vai ter uma lâmpada assim eu não sei se dá para dando para vocês verem aqui mas tem uma lâmpada aqui você pode clicar em cima dela e você pode fazer várias ações o que eu quero instalar o pack ts4 clica aqui aqui embaixo ele vai atualizando para gente que tá instalando ó já tá instalado perfeito e assim que você vai poder trabalhar instalar né ajudou até aquelas utilizando o pai Charme perfeito ok que que eu vou fazer aqui agora eu vou dar uma olhada aqui ó ó e no site novamente e veja que nós temos 20 cadeiras por página Estou deixando aqui 20 cadeiras pode alterar se quiser mas eu vou deixar os 20 e a gente tem um monte de página Então a gente tem que percorrer todas essas páginas como é que a gente vai saber quantas páginas a gente vai ter que percorrer porque pode ter aqui Aqui tem 76 mas pode ter cinco dez quinze quarenta bom aqui em cima tem essa quantidade de produtos aqui ó 1513 Então vou vir aqui novamente foi realmente pressionada nessa aqui clica aqui e vou nesse número Zinho aqui esse número sim aqui é um ai dia esse cara ele não tá sendo alterada Não ele tá com o nome dele que é um Listen Country tá vendo Então o que que eu vou fazer aqui nesse caso bom é uma div também eu vou vir aquilo faz Charme ou fazer o seguinte ó que te ver os itens vai ser igual sup. Faz E aí é só botar um site porque ele encontra uma vez só e ele é uma div a, ele é o ai Di Qual é o ai dele esse cara aqui ó bom então quero que você procure esse aí aqui ó holística out E aí eu quero que você pega o texto get Text e eu quero que você faça um strip que é para tirar os espaços em branco Ok E agora o que que eu vou fazer eu vou fazer o seguinte se eu der o print nesse aqui eu tirei itens eu acho que você tiver funcionar vou dar um hum vamos ver como é que ele vai se comportar hum não escreve botão aqui em cima Randy que você quer ajudar você quer rodar o seu problema in scraping e no módulo pandas reclamando panos A então vamos mostrar alô para nós aqui ó para não dar problema fica aqui Panda Spa instalpex Pânico 1 tu acha que tá instalando Ok instalou pandas perfeita Ah pois é que tá novamente O Clone é perfeito veja que ele trouxe para mim ele trouxe 1513 produtos exatamente que tá escrito aqui ó 1513 produtos mas eu só quero esse 1513 então o que que eu vou fazer aqui eu vou fazer o seguinte ó tirei esse print Por enquanto vou fazer assim index vai ser igual quantidade de itens foto find E aí eu quero que ele acho um espaço em branco porque tá vendo aqui ó o quantidade de index é essa estranho aqui e aqui tem um espaço em branco Então quero que ele me acha exatamente qual é a posição nesse espaço em branco por isso que eu tô colocando essa aqui ó quantidade de esse ponto faz um espaço em branco e aí eu vou fazer que entender vai ser igual quantidade de itens o índice que eu tô fazendo aqui eu tô fazendo a quantidade de indique que assistindo aqui e eu quero que você me retorna desde o início até o index Ok então o que que vai acontecer aqui vou mostrar para vocês estão como é que fica o print quantidade de itens vou plantar também o windows para vocês verem index e vou pintar o também a quantidade print quantidade o PT Olha que que vai acontecer rodou PA E aí stream é essa aqui meu que esses três produtos ele achou Windows Windows Onde está o espaço em branco que é o quatro e agora essa tá me trazendo o 1513 que o que eu quero e por que que você quer isso Alice porque eu quero saber que 1513 produtos / 20 produtos de paz vai me dar a quantidade de páginas que eu preciso ficar paginando por isso que eu tenho que fazer essa matemática aqui porque eu não sei a quantidade de produtos podem mudar né então EA quantidade de páginas obviamente também pode mudar pela quantidade de produto bom então essa matemática toda aí né Essas buscas foram exatamente para saber exatamente essas páginas que a gente vai ter que trabalhar e para eu saber eu vou até agora aqui fazer uma continha aqui ó queimar última a página vai ser igual a Nerf.
Saiu matinal f o ponto seu e de quem doente da minha quantidade divididos por quem por 20 e aí eu consigo achar o número da página aqui que no caso vai dar 76 né por isso que eu tô usando o seio para jogar para cima porque ele é um número quebrado eu mas eu quero aquele jogue para cima então fica 7075 vivo alguma coisa mas a 76 perfeito e agora vou fazer o quê Vou dar um dict produtos Oi e esse cara vai ser um dicionário por quê Porque eu quero criar um dicionário com as informações de preço o e informações da marca Oi e aí dentro de cada chave dessa vai ter as informações eu botar pendando isso aqui dentro de uma lista por que que eu tô fazendo isso porque depois eu vou transformar esse dicionário não Data Frame para gente poder trabalhar outro dentro do Excel alguma coisa do tipo que fica muito mais fácil né Você pega essa Data Frame Esporte ali por um csv a trabalhar dentro do Excel do Google x alguma coisa tipo você trabalha ele muito mais rápido por isso que eu tô criando esse dia que te protege aqui ok então agora que a gente vai fazer a gente vai dar uma o four por todas as nossas páginas Então volta aqui e vamos pegar aqui uma página qualquer aqui ó pegar a página dois e aí eu preciso desse endereço aqui da página aqui perfeito volta lá então vamos lá for ir in-range de quem de um roupa de um e Até à última página mais um porque mais um porque o pai então ele é exclusivo então ele vai fazer de um até 76 Só que no caso e vai pegar se a gente lembra do conceito e vai ficar de 0 a 75 eu não quero quero que ele vá até a página 76 Então vou pegar o 76 vou só mais uma das 77 para eles exatamente na página 76 que a página que eu quero perfeito Ok então aqui eu vou botar o URL pegue mede página E aí eu vou passar aqui uma string e vou passar a página que eu copiei só que eu tenho que fazer uma alteração aqui ó aonde no page Number e aqui vai entrar o meu e que a minha variável que vai ficar e ter ano então aqui na page Number vai lá passar pela parte a 1 depois da 2 A 3 até chegar à última página perfeito e aqui a gente pode copiar essa parte aqui de cima e ele poder fazer o parte bonitinho só que aqui vai entrar quem URL pegue de página o site né regra espaço Hair super vai né transformado no objecto super aquilo combino ou sup aqui faltou que a sup e a sup o ponto beautifulsoup a Hoje a noite não tem essa beautifulsoup dediquem de side. com tarde e aí vai passar o parça dele perfeito e aqui que eu vou fazer vou fazer assim produtos vai ser igual a sul ponto find ou todos os produtos e que produtos que eu quero que me traga vou espessionar aqui novamente clica aqui eu quero que ele me traga esse elemento aqui né onde estão as cadeiras também a cada um desses elementos aqui esse elemento grandão aqui ó peraí deixa eu pegar esse cara aqui ó expliquei então a gente pode ver aqui o nome da classe ele tem esse nome na frente SC alguma coisa para vai mudando e tem um produto de card esse produto de card é que nos vai nos ajudar a poder trazer e fazer um scripting da nossa página porque essa parte da frente aqui aquela que muda de tempos em tempos mas o produto de card eles se mantêm esse nome se mantém Então vão pegar esse cara aqui control c e com ajuda da região e vamos conseguir buscar informação exatamente de cada elemento desse cara aqui em cada página Beleza então em volta aqui a gente vai procurar o que ela é uma dívida vendo uma dívida algum procurar de IV que tem a cresce igual a um rr. com pai olha que vai tá utilizando a nossa regex que tem o que é um produto de corda então que eu tô dizendo para ele mas é uma procura todo mundo que tem uma div com a classe que tenha o nome próprio de card dentro dela perfeito e agora a gente vai interar for produto os produtos ia que que eu vou fazer aqui voltar iterando em cada um desses produtos né Porque esse produto João São vão ser todos eles para cada página para você esse esse esse esse em cada um deles eu vou ter que entrar para pegar o nome né a descrição da marca e o preço perfeito por isso que eu faço esse forte produtos em produtos e aí a gente vai fazer assim marca vai ser igual a produto o ponto e aqui eu só quero fine que eu só quero encontrar um eu quero encontrar o que eu quero encontrar essa marca aqui os cara aqui e veja aqui também a classe ela tem aquele nome que muda mais um name Card não muda então a gente vai conseguir utilizar esse name Card aqui para poder trabalhar ok então ele é um spam que tem uma classe que altera de tempos em tempos mais um name Card é um nome Zinho que não se altera então gente consegue trabalhar a mesma esquema do Rex perfeito Então procure quem procura um spam, com uma classe que vai ser igual a rr.
com Palio que vai ter o que o name Card E aí eu só quero que você me traga o get text o texto e ir faça um strip aqui né que tira os espaços em branco para trazer o nome certinho bonitinho para mim posso fazer essa mesma coisa com o quê com preço ó e aqui vai ser o clássico é só aquele muda esse cara aqui quem é vamos ver aqui o preço ele tem esse cara aqui ó que é o país Card então é esse cara aqui que a gente vai estar utilizando e traz Card perfeito vamos dar uma olhada começa que ficou vou dar um print é da marca e do preço acho que vai funcionar beleza vamos botasse aqui para rodar hum a UPA Spectrum of the Dictionary software alguma coisa aqui a rei isso aqui tem que ficar aqui é legal roda e vamos ver que que ele vai fazer aqui pra gente vai trazer Opa streep Provavelmente o rio nome aqui no aqui ó nós tip strap-on e bota para rodar de novo vamos lá Oi e aí ó o garoto é um trazendo todo mundo tá vendo a cada alteração de essa é uma página posso até parar aqui para gente ver ó Print máquina botar aqui um print o peixe doc Uai tem que vim aqui fora print a URL peixe bota pra rodar de novo vai falar mais não página 2 página 3 página 4 ele vai trazendo todas as informações que a gente está querendo levar alterando aqui as informações do seu nosso produto com preço quanto da marca para isso aqui a e agora vamos fazer o quê Vamos colocar esse aqui pode até deixar aqui dentro sempre vou tirar aqui e deixar não tem problema então sim bonitinho e aqui eu vou fazer o quê aqui eu vou botar um dique produto vai receber o que vai receber a marca o ponto aprende de quem da marca é a mesma coisa a gente vai fazer para o preço e Akira vai receber o preço é perfeito e agora a gente cria um Data Frame DF vai ser igual P de ponto Data Frame que vai receber quem o dia que produto e defe ponto tio csv porque eu quero exportar isso e eu vou exportar aqui para um diretório aqui na minha máquina e eu já coloco aqui também algumas informações como unicode utf-8 separador vai ser o.