Transcript for:
Web Scraping com Selenium e Beautiful Soup - Integração e Finalização

Esse vídeo é o oitavo da série sobre o web scrapping que eu tenho disponibilizado aqui no canal. No vídeo anterior, a gente começou a ver como integramos o Selenium com o Beautiful Soup para que a gente possa fazer um web scrapping na página do Airbnb. Nesse vídeo, a gente vai continuar nesse mesmo sentido. A gente vai continuar integrando essas duas bibliotecas e vamos finalizar o ciclo daquela aplicação.

Ou seja, a gente vai finalmente pegar os dados de todas as hospedagens de uma determinada localidade onde a gente estava pesquisando E vamos salvar todos esses dados em um arquivo CSV ou uma planilha de Excel, algo nesse sentido. Então, se você perdeu algum dos vídeos anteriores, eu vou deixar um card linkado aqui em cima para que você possa conferir e acompanhar perfeitamente toda a linha de raciocínio desde o início ali de HTML que a gente veio, até Beautiful Soup e agora o Selenium. Beleza? Você está preparado para esse vídeo? Então, vamos começar!

Fala aí pessoal, sejam muito bem-vindos a mais um vídeo aqui no canal. Eu me chamo Alisson Silva e nesse vídeo a gente vai continuar essa nossa aplicação aqui, como eu comentei na introdução, né? No vídeo anterior a gente fez esse código aqui, tá?

E o que é que eu vou fazer basicamente para a gente poder iniciar nesse vídeo de hoje? Eu vou primeiro dar um Ctrl C nessa pasta, Ctrl V, então vou criar basicamente uma cópia do código do vídeo anterior aqui. Vou alterar o título aqui dessa pasta para 08. o selênio airbnb dois tá então vou deixar aqui um dois vou até colocar um asinho maiúsculo aqui nessa outra página também né E aí a gente vai continuar então de onde a gente parou tá bom então vou criar aqui vou continuar nesse outro arquivo da pasta 8 lembrando todos esses arquivos estão sendo disponibilizados aqui no GitHub tá então se você quiser pegar depois desse vídeo aqui você pode acessar pode fazer o download de toda a pasta clonar para você ou até mesmo você tá clicando nessa estrelinha aqui você vai conseguir acessar mais facilmente aí da sua conta do GitHub, beleza?

Então, olha só, o que foi que a gente fez aí no vídeo anterior? Fizemos uma aplicação mais completa, no caso aqui usando o Selenium, né? Então, a gente abriu lá o nosso Chrome, configuramos o tamanho dele, acessamos a página do Airbnb, criamos então alguns slips, né? Para que o nosso navegador consiga responder perfeitamente ali aos nossos comandos. A gente está fazendo uma busca por hospedagens em São Paulo, na cidade de São Paulo, né?

E aí a gente já conseguiu clicar e interagir em alguns elementos. Então, se você perdeu as informações do vídeo anterior, dá uma conferida nele, porque eu tenho certeza que vai ser super importante para você conseguir acompanhar. Mas olha uma coisa que eu acrescentei no caso em relação ao vídeo anterior.

Eu te dei algumas dicas de como você poderia fazer, mas eu adicionei aqui essa parte aqui no código para que a gente, lá naquela página em que ele pede quantas pessoas estarão nessa hospedagem, A gente consegue interagir com aquilo lá. E aí eu adicionei esse código aqui, que basicamente acessa aquele maisinho dos adultos e clica duas vezes nele adicionando lá dois adultos. Olha só como ficou bacana depois desse acréscimo aí.

Então, ele roda aqui, ele já abre o navegador com o tamanho que a gente definiu, pesquisa por São Paulo, clica aqui, aqui ele adiciona dois adultos de forma automática. E aí ele já pesquisa e traz uma lista com todos. as hospedagens no caso nessa região inclusive já traz aqui todo o HTML da página que a partir desse ponto que a gente vai continuar tá como eu comentei no vídeo anterior o ponto principal mais complicado é você conseguir saber exatamente qual seletor que você vai utilizar quando você tá trabalhando com selênio e não só selênio né no beautiful super gente já viu que a gente tem que ter uma certa maturidade com relação a isso no meu caso aqui eu dei uma inspecionada lá e observei que aquele seletorzinho demais ele tinha ele tava dentro de uma tag button que possua vez de uma tag spam que possua vez de uma tag svg dentro dela que possua vez de uma tagzinha pé que o pé isso aqui pessoal é para quem não conhece muito svg o svg basicamente ele é construída a partir desses dados aqui que são passados então aquele aquele símbolozinho aquele ícone demais ele tem esse conteúdo aqui ó para que o mais seja gerado então O que eu fiz basicamente foi dizer, ó, pesquisa por esse SVG que tem dentro dele um path com esse dado aqui.

Isso aqui é o mais, é o ícone de mais. Então, eu fui no primeiro, que é o de adultos, tá? E lá eu cliquei duas vezes, como você pode ver, ó, coloquei dois cliques aqui.

Tranquilo? Mas então, o que a gente vai fazer hoje, uma vez que a gente já entendeu essa parte que eu acrescentei aqui, né, relacionada ao vídeo anterior? A gente vai pegar o nosso, nossa página, deixa eu até abrir ela aqui novamente.

e vamos dar uma inspecionada para a gente conseguir encontrar os elementos dentro da página HTML ensina eu vou fechar isso aqui ó vou clicar com o botão direito aqui em cima desse texto e vou dar um espectro tal inspecionar elemento aí se você tiver usando em português tá eu vou expandir vou tentar expandir um pouco mais aqui tá certo só para gente conseguir visualizar melhor esse HTML vou clicar mais uma vez aqui ó ele vai dar direto nesse texto porque eu não quero esse texto né O que que eu quero e eu quero cada uma dessas tags aqui desses cards né que tem essas informações a respeito da hospedagem o que que a gente vai pegar a gente vai pegar essa linha aqui é interessante a gente saber se é um apartamento inteiro Pinheiros tal a região né no caso aqui é uma descrição né do nosso da hospedagem e o preço também Poxa bacana a gente também tem esse até essa informação do preço pode bom então a gente vai praticamente pegar essas três informações até mesmo link a gente também pode salvar eu acho que é legal a gente tem o link eu só não vou pegar avaliação tá mas eu vou te dar uma dica para você conseguir pegar também para não ficar tanta informação aqui depois a gente pode salvar no data frame jogar no csv numa planilha e assim sucessivamente mas então vamos pesquisar por esse elemento aqui ó se você for rolando no html essa ideia né eu vou descer descendo aqui ó eu vou procurar por esse conteúdo então vamos lá e não é aqui aqui a gente tem essa parte pronto perfeito então é esse essa vive aqui que a gente precisa encontrar dentro dela a gente tem essa outra então era só esse essa página por isso que eu comentei no vídeo anterior ela é um pouquinho complexa tá tem várias de visuma dentro da outra e você vai ter que sair procurando Olha só parece que finalmente a gente chegou eu vou levantar um vídeo aqui para você visualizar Olha só que legal primeiro primeiro primeiro hospedagem a segunda hospedagem tá essa daqui de baixo a segunda essa daqui a terceira você vê que já destacou ali então beleza aparentemente a gente encontrou então vou para a primeira a gente sempre foca na primeira lembra da técnica que eu ensinei nos vídeos anteriores com o bifo sup então vou focar nessa primeira vez que quando eu vou entrando dentro dessa de ver aqui ó vai eu vou até aumentar aqui ó para você conseguir visualizar melhor então quando eu entro nessa parte aqui ó e eu consigo ver essa outra que continua sendo todo o conteúdo a imagem o conteúdo da hospedagem até que eu chego nessa eu vou partir para essa daqui pessoal e aí eu vou te dar uma outra dica tá relacionada a isso você observa aqui na página aqui do Airbnb a Clésia ela tem um formato um pouco diferente não é como nos que a gente tinha visto anteriormente por exemplo lá no nosso livro né que quando a gente entrava e acessava a gente via que aparentemente tinha um nome de class que fazia sentido. Esse aqui é um conjunto de caracteres que, no caso, envolvem dígitos e letras que parecem não fazer muito sentido. Então, a coisa que eu queria dizer para você é não costuma confiar muito nessas classes aqui que têm esse padrão, porque possa ser que quando ele renderizar essa página em um outro momento, mude totalmente esses labels.

Muitas vezes eles são criados de forma automática por meio de bibliotecas que são utilizadas, por exemplo, no React, sabe? Então, evita confiar. e em buscar as informações com base nessas classes eu particularmente gosto de driblar isso daí e aí eu vou utilizar essa outra de ver essa outra de para mim faz mais sentido porque é uma Div cujo o atributo dela é esse airem próprio que faz sentido não é um item que a gente está buscando aqui que o nome dele é airem Leste element tá então airem próprio cujo conteúdo ali é airem Leste element então é isso aí ó eu já vou dar um control c aqui eu vou fechar por enquanto tá vou vir para cá e a primeira coisa que eu vou fazer apagar esse print eu não quero imprimir o site inteiro que que eu vou fazer de dentro do site eu vou procurar por aquele Iron próprio lá beleza aquele aquela de vizinha que tem as informações do primeiro apartamento então para isso que que eu vou fazer eu vou pegar aqui sei lá é hospedagem eu vou chamar aqui uma vez hospedagem hospedagem recebe site.com então vou procurar por uma tag div cujo atributo então a TTR se você já deve conhecer é o iron prop dois pontos e aí eu vou colocar esse aqui Iron Leste element Beleza agora sim eu vou dar um print aqui ó hospedagem. Prerify para gente conseguir visualizar de uma forma mais legal então agora ele vai fazer todo aquele processo em alguns momentos do vídeo vou cortar essa parte tá do da automatização com excelente não vai ficar muito legal beleza é mas basicamente ele tá pegando aí fazendo toda aquela rotina automatizada que a gente criou nesse primeiro vou deixar nos próximos eu já dou uma cortada aí então chegou aqui na página beleza aparentemente chegou html então ele deve ter pegado nessa essa região aqui vamos ver se isso aconteceu vou fechar aqui ó vou subir e Opa parece que que pegou mesmo né o conteúdo já é diferente do conteúdo que a gente tinha então até eu consigo ver desde o início a ironless element E aí aqui a gente tem aquele aquele link que aparecia junto com a div não sei se você lembra mas olha que legal agora nesse meta aqui ó a gente logo de cara a primeira informação que aparece esse meta que tem um content beleza e esse content é justamente o que a gente quer e olha que interessante isso aqui my magazine apartamento que ele coloca aqui é justamente a descrição do primeiro do primeiro da primeira hospedagem que a gente tem ela beleza e aqui a gente tem esse item próprio aqui que a gente conseguiria até utilizar para buscar enfim a gente vai fazer essa busca daqui a pouco mas olha que interessante é que a gente já tem a nossa primeira informação então vamos partir para ela eu acho que seria até legal a gente começar já que a gente olha o que a gente pode fazer É o seguinte, eu vou deixar, eu vou continuar deixando ele imprimir aqui as informações completas da hospedagem, mas eu vou fazer uma outra busca aqui, eu vou colocar aqui, por exemplo, hospedagem descrição, vou chamar assim, tá? Descrição recebe hospedagem, então agora eu vou pesquisar dentro de hospedagem, ponto find, então lá dentro o que é que eu vou pesquisar?

Eu vou pesquisar por uma tag meta, você deve lembrar que era uma tagzinha meta, cujo ATTRs... é igual a nem você lembrou deixa eu dar uma olhada aqui ó um dos atributos que a gente tem lá dentro dela é esse aqui a irem próprio igual a nem então vou copiar isso aqui ó vou vir aqui a irem próprio dois pontos nele vamos ver se ele encontra essa essa descrição vou dar um print aqui ó hospedagem descrição vamos rodar novamente e vamos ver se ele vai trazer essa informação beleza nesse ponto agora eu vou cortar para ficar mais rápido daqui para frente fechado ela terminou aqui a execução E aí olha que legal ele trouxe aquela tag meta para gente não é fantástico a gente já tem a descrição do primeiro da primeira hospedagem que essa daqui Magazine apartamento beleza inclusive se a gente colocar em português talvez fica até melhor já vou fazer essa mudança aqui mas eu vou deixar para gente jogar ela na próxima execução mas já vou deixar salvo aqui ó.br né foi uma coisa que eu não coloquei no vídeo anterior mas agora vou colocar no.br aqui Então, primeira informação a gente já tem. Se eu quiser só esse nome aqui, como é que eu faço, Alisson, para pegar só esse nome?

É tranquilíssimo. Você vem aqui no formato de um dicionário, você coloca aqui, aliás, content, que é exatamente esse atributo. Então, você vai pegar somente esse texto que você vê aqui nesse atributo content. Beleza?

Então, poxa, muito legal. Vou até rodar novamente aqui para a gente ver se a gente vai conseguir chegar exatamente no resultado que a gente espera. Olha só, pessoal, então, aparentemente funcionou, ele mudou o nome aqui do apartamento, a gente vai ver o que aconteceu, provavelmente foi porque eu coloquei em português, né? Eu já vou clicar aqui em OK, né?

Porque apareceu essa janelinha, vou clicar aqui em OK. E olha só, de fato, como eu coloquei agora.br, mudou um pouco o formato da página, você vê que as informações estão em português agora, que era exatamente aquilo que a gente queria, né? E aí, agora ele trouxe a informação desse primeiro aqui, ó, flat 104, maravilhoso nos jardins, olha só. Beleza? Então a gente já conseguiu pegar a descrição do primeiro, do primeiro hospedagem aqui que seria esse flat, beleza?

Então o que a gente vai fazer? Vamos tentar ir aprofundando, a gente já está começando a chegar no que a gente quer. Para a gente poder continuar, eu não vou nem por esse navegador, eu vou dar uma olhada no próprio conteúdo que está aqui dentro, você vê que tem muito conteúdo aqui que a gente já pode inspecionar por aqui mesmo.

Por exemplo, olha que interessante, aqui a gente tem um outro item prop, que é o Url. e essa UUrl muito provavelmente que a que aparece aqui dentro desse contente ó eu vou copiar tudo que tá dentro desse contente aqui ó e muito provavelmente pessoal que é o que eu quero te mostrar aqui ó tô até com mais de um aberto então vou abrir uma nova aba colar esse link você vai ver que é exatamente o link desse flat então esse link que aparece aqui é o link da hospedagem a gente também vai salvar isso vamos jogar dentro de uma planilha Beleza então já vou fazer o seguinte vamos voltar para o nosso código Do mesmo jeito que eu fiz para hospedagem descrição, eu vou fazer um outro aqui chamado hospedagem UUrl. Vou alterar esse item prop para UUrl.

Simplesmente isso. E aí, a nossa UUrl, olha só, aqui eu vou colocar descrição. Vou só melhorar aqui o nosso texto aqui para apresentar aqui no Python.

Aqui eu vou colocar a UUrl da nossa hospedagem. Vai ser... a hospedagem UUrl na posição ou melhor no caso no atributo conta do mesmo jeito porque no atributo Contente que quando eu pegar essa tag meta aqui cujo item próprio é o Url eu vou no contente de novo e aqui a gente vai ter de fato a nossa UUrl Beleza então é basicamente a mesma coisa na verdade é idêntico só muda que agora não tô pesquisando por esse item próprio name que ele me dá a hospedagem eu tô procurando pela UUrl Tá bom? Então, agora a gente já tem duas informações, teoricamente. Eu vou só rodar aqui para a gente ter certeza de que a gente está fazendo tudo certinho, beleza?

Pronto, pessoal, terminou aqui a execução. E como você pode ver, ele pegou perfeitamente aqui a nossa UUrl, tá? Então, eu vou salvar essa UUrl também dentro do nosso arquivozinho CSV ou de Excel. Tranquilo? Então, olha só, vou subir aqui e vamos continuar a nossa busca.

O que está faltando? Se a gente for parar para pensar... O que está faltando aqui, eu vou fechar, estou com mais de uma, mais uma vez aqui, né? Então, o que a gente está buscando agora é, primeiro, esse conteúdo aqui. Eu quero saber que tipo de hospedagem é essa, e esse tipo, ele vem exatamente aqui em cima, flat inteiro, em Cerqueira César, por exemplo, que é o local, né?

Se a gente descer aqui, a gente tem a República, condomínio inteiro, a gente vai ter esse aqui em outro local, né? Esse aqui em Pinheiros, apartamento inteiro, e por aí vai. Então, a gente tem basicamente uma descrição.

do tipo ali de hospedagem e o local onde fica, tranquilo? Então, é isso que a gente vai buscar agora. Como é que a gente vai fazer? Vamos agora para o HTML localizar essas informações aí. Quando você vem aqui, eu já logo de cara já bati o olho, já encontrei aqui, até porque, claro, eu já tinha feito isso aqui anteriormente, né?

Mas, ó, aqui a gente já tem uma div, beleza? Essa div aqui, ela tem essa class, mas como eu disse para você, não confia muito só na class, né? eu vou até buscar por esse atributo style. Eu já tinha feito isso anteriormente, como eu comentei, mas se você for fazer por conta própria, você vai analisar que cada bloquinho desse, esse aqui é só a primeira hospedagem.

Mas se você fizer para todas as outras, coisa que eu já fiz anteriormente, você vai ver que todas elas vão ter esse atributo style com um margin bottom de 2px. É até legal para a gente abrir um pouquinho mais os nossos horizontes aqui com relação à forma de buscar elementos no Beautiful Soup. Para a gente não ficar muito preso a uma técnica só, tá?

A minha ideia aqui é expandir os seus horizontes para você ter toda essa visualização, beleza? Então, o que eu vou fazer aqui? Eu vou descer e agora eu vou pesquisar por aquela tag div que tem aquele style.

E para fazer isso, eu vou fazer o seguinte aqui. Lá a gente vai ter mais detalhes, não é isso? Então, eu vou fazer o seguinte, eu vou chamar de hospedagem detalhes, tá? Que é o tipo de hospedagem e a localização dela.

Então, eu vou chamar de hospedagem detalhes. e recebe hospedagem o passo hospedagem né dentro do conteúdo todo da hospedagem que é aquele aquela deve toda eu vou pesquisar então fazer um find aqui por uma tag vive como você pode ver deixa eu só encontrar novamente essa aqui ó essa tag div que tem esse style Então já vou copiar o style que tá aqui dentro tá bom então copiei o style e aí eu vou vir aqui eu vou procurar por uma tag vive que o ATTR dela aqui aqui tá então a TTR opa a TTR igual aí aqui eu vou colocar o style dois pontos qual estilo que a gente tem margem Boron dois pixels tá então é esse aqui que eu tô interessado em encontrar Beleza vamos dar um print aqui vamos ver se ele vai conseguir encontrar hospedagem descrição e já vou fechar a primeira essa janela aqui para a gente poder rodar novamente ver se ele vai encontrar aquele conteúdo Certo? Tem uns detalhes interessantes nesse conteúdo, mas a gente vai ver daqui a pouco.

Pronto, pessoal, terminou de executar aqui, né? Só que como vocês podem ver, eu cometi um erro, né? Eu acabei colocando aqui hospedagem descrição, tá?

Então, na verdade, aqui é hospedagem detalhes. Então, vamos rodar novamente para ver se agora ele realmente vai mostrar o que a gente estava procurando, beleza? Pronto, pessoal, como vocês podem ver, ele terminou aqui a execução, né?

E o que a gente conseguiu obter, eu vou até aumentar um pouco aqui, ó. O que a gente conseguiu obter é exatamente o que a gente estava buscando. Como você pode ver aqui, eu vou até dar uns enters aqui para ficar melhor.

Olha só, o que a gente estava procurando aqui era exatamente essa div. Então, aqui a gente vai ter essa ol dentro dessa tag ol, que é uma tag de lista, uma lista ordenada, que foi o que o pessoal optou por colocar aqui no HTML. A gente vai ter esse ali, que tem flat inteiro, que é basicamente uma descrição realmente do tipo.

Vamos lá. da hospedagem, e logo depois a gente vai ter esse ponto aqui, no caso, e Cerqueira César, que aparentemente é a localização. Bom, exatamente isso que a gente queria.

Como é que a gente vai fazer para pegar essas Liss? Porque observa que a gente tem essa Lis, que tem flat inteiro, ela começa aqui e termina aqui. A gente vai ter também essa outra li, ela começa aqui, tem esse span dentro, beleza, tudo bem, não tem problema, que tem esse ponto, e depois tem a continuação, que é o local em si, aí aqui termina a segunda li, ou seja, a gente tem duas lis.

E eu quero buscar uma forma aqui de achar essas duas lis ao mesmo tempo. Como a gente vai fazer isso? É simples.

Eu vou fazer tudo em uma única linha, você pode fazer separado se você preferir, mas vou fazer junto aqui porque eu acho que vai fazer sentido. Olha qual é a minha ideia, acompanha aqui comigo. Dentro da hospedagem, você vai encontrar para mim uma div, cujo style seja esse aqui, margin-bottom 2 pixels. Aparentemente, é a única que a gente tem dentro de um bloco de div da hospedagem. Aí dentro disso, olha a lógica aqui, dentro disso, o que você acabou de encontrar.

e encontre todas as Eli então encontra para mim todas as Alice Será que ele vai conseguir encontrar para gente vamos testar isso né aqui dentro eu vou continuar imprimindo o hospedagem detalhes só que agora ele só vai trazer as Eli todas as ali que ele conseguiu encontrar dentro daquela div que a gente tava buscando então agora eu vou rodar aqui novamente e vamos ver qual vai ser o resultado tá Bom, terminou aqui a execução e como você pode ver aqui embaixo, eu vou até vir só para cá, você consegue observar que ele trouxe o quê? Uma lista, perfeito, uma lista onde a primeira ali é o tipo da hospedagem, flat inteiro, e a segunda ali é exatamente dentro dela que a gente vai ter um texto ali dizendo o local aparentemente da hospedagem. Perfeito, o que a gente vai fazer?

A gente vai pegar isso aqui e transformar em uma coisa só. Será que tem como a gente juntar o text que está dentro dessa li com o text que está dentro dessa outra li aqui? Teria como a gente fazer isso. Olha como é que a gente faria. Basicamente, a gente poderia criar um código aqui mais manual que faria o seguinte.

Hospedagem de detalhes, a gente já sabe que é uma lista que tem duas posições. A primeira li. e essa segunda li aqui então poderia fazer o seguinte hospedagem detalhes na posição zero acessaria essa primeira ali aí eu pegaria o ponto teste E aí eu sou Maria por exemplo né com hospedagem detalhes na posição um ponto teste isso aqui eu poderia dizer ó minha hospedagem detalhes vai ser isso aqui vai ser hospedagem detalhes na posição zero que a primeira ali é um ponto teste ou seja pega só o texto que tá dentro dela e faz a mesma coisa com essa outra ali pega só o texto que tá dentro dela aí com catena os dois e joga dentro dessa nova variável dessa variável que eu tô chamando de hospedagem detalhes bom isso aqui pessoal seria uma forma manual de você fazer provavelmente vai dar certo se você quiser fazer aí até testar você vai ver que provavelmente vai funcionar numa boa mas eu vou tentar converter isso aqui ó e aí fica até legal porque a gente vai acabar vendo um outro uma outra coisa muito comum que é utilizando um for, então vou fazer um for para ele percorrer todas as duas li's e fazer isso de uma forma automática, porque vai que algum deles não traz essa segunda informação, só traz a primeira.

Então, quando eu tentar fazer isso aqui, vai lá na posição no índice 1, que no caso seria a segunda linha e pega o texto, ele daria um erro, naturalmente ele retornaria um erro para a gente e o nosso código ia quebrar. Então, para evitar esse tipo de coisa, eu vou fazer de uma forma automática. Como é que seria?

hospedagem detalhes, opa, detalhes, recebe, aí eu vou utilizar um paradigma aqui que a gente tem no Python chamado de compreensão de lista. Você já ouviu falar em compreensão de lista? Basicamente é um for que você faz em uma linha só. Se você quiser que aqui no canal eu fale um pouco mais sobre compreensão de listas, deixe aqui nos comentários que eu posso trazer para vocês. Aproveitando, inclusive, se você está gostando desse vídeo, não esquece de deixar o seu like para dar aquela força ao canal, beleza?

Então, olha só. Eu vou usar a compreensão de listas aqui, vou fazer detalhe para detalhe em hospedagem detalhes. Então, poxa, para quem nunca viu compreensão de listas, isso aqui pode parecer uma coisa super estranha. Mas o que eu estou fazendo é criando uma lista.

Olha só, estou criando uma lista, você observa que tem uns colchetes, e dentro dessa lista eu estou colocando um for. Então, estou dizendo o seguinte, para detalhe em hospedagem detalhes, como assim? Hospedagem detalhes é essa lista, então, estou percorrendo o primeiro elemento, depois o segundo elemento. Aí, eu estou dizendo, pega o detalhe, ou seja, o primeiro elemento, e depois o segundo, e joga dentro da lista.

Ou seja, eu estou fazendo a mesma coisa que a lista já é. Eu estou criando a mesma lista no caso, só que olha só, isso vai mudar se aqui eu colocar um ponto text. E aí eu vou fazendo passo a passo para você ir entendendo aqui.

Eu vou salvar isso e vou rodar novamente. Lembrando, você não precisa fazer isso aqui exatamente utilizando compreensão de lista. Você pode fazer utilizando um for normal, mas no meu caso aqui eu estou utilizando ele porque eu acho que fica mais enxuto o código, digamos assim.

Então, olha só, a gente chegou exatamente no que eu queria. A gente agora tem uma lista que não tem mais aquela li. o que a gente tem agora, porque eu coloquei aqui dentro dessa compreensão de lista o ponto text, ele percorre cada item da lista, cada li, e só pega o conteúdo, só pega o texto, tá bom?

Por isso que a gente chegou nesse resultado. Agora, poxa, tem como eu juntar os dois itens dessa lista em um item só? Tem como sim.

E a forma de a gente fazer isso seria, olha só, não sei se você lembra, mas dentro de strings a gente tem um método chamado join. E aí o que eu estou fazendo aqui? Junta. esses elementos dessa lista, que no caso, lembra que são esses dois, eu estou juntando esses dois aqui, então, faz um join deles, separando eles por vazio, ou seja, por um string vazio.

Simplesmente junta, porque eu já estou vendo que aqui tem um espaço, aqui tem outro espaço, então, quando eu juntar os dois elementos aqui dessa lista, vai funcionar numa boa. Bom, rodei aqui novamente e como você pode observar, a gente já tem aqui a descrição da nossa hospedagem, a gente já tem a UUrl da nossa hospedagem e agora a gente também tem detalhes da nossa hospedagem. Então, olha que bacana.

A gente poderia colocar até separado, tipo da hospedagem, local, mas eu vou deixar tudo junto mesmo. Detalhes, vou até colocar aqui, detalhes da hospedagem. Dois pontos, vou colocar aqui uma vírgula.

o efeito show de bola agora a gente já tem essas três informações o que que tá faltando basicamente que tá faltando agora pessoal é a gente pegar o preço né E para gente pegar o preço a gente tem aqui diferentes abordagens que a gente poderia utilizar beleza mas eu vou escolher uma delas e você pode optar por outros caminhos que como você pode ver essa informação aparece aqui ela aparece nessa outra spam aqui então poxa vai ficar muito a seu critério o caminho que você vai achar Beleza? Mas qual é o que eu vou escolher aqui? Se você analisar aqui juntamente comigo, você vai perceber que essa span é a última span que você vai ter dentro dessa div maior que a gente pegou, que são todos os dados da nossa hospedagem. Então, o que eu vou fazer? Eu vou procurar dentro dessa div de toda a nossa hospedagem, de todo o conteúdo dela, a última span.

Então, eu vou procurar por todas, no caso, e vou dizer, pega a última, nessa última vai ter lá a informação do preço. e que nesse caso r$ 90 por noite então vou pegar a informação toda se você quiser quebrar só no valor numérico só no 90 a gente consegue fazer isso usando funções de strings né mas no meu caso eu vou pegar essa informação completa então como é que eu vou fazer isso simples eu vou fazer aqui ó hospedagem na verdade chamar só de preço tá preço aqui vai ser basicamente Olha só a gente tem que procurar pela spam então vou fazer hospedagem. Fim e spam e na verdade não só faz faz ou seja encontre todas as espantas vai lá na última na posição menos um então ele vai trazer uma lista com todas as espantas eu tô pegando só a última então aqui eu vou fazer.

Text e aí a gente finaliza essa busca Será mesmo vamos dar uma olhada né então vou colocar aqui ó print preço da hospedagem hospedagem dois pontos preço beleza Vamos rodar aqui novamente, deixa eu só fechar essa janela, e vamos ver se a gente vai conseguir chegar no resultado que a gente deseja. Bom, pessoal, terminou aqui a execução e olha que legal, a gente finalmente conseguiu pegar todas as informações. A gente tem a descrição, a UUrl, os detalhes da hospedagem e temos o preço da hospedagem.

Vamos fazer um fora agora para automatizar a busca de todos os que existem aqui, todas essas hospedagens que a gente tem na página. Como é que a gente faria isso? e se você acompanhou lá os vídeos anteriores sobre birra foi o sup é muito simples ó aqui eu tô pesquisando por uma hospedagem certo então o que que eu vou fazer find all ou seja procura por todas as livros cujo atributo airen próprio seja igual a ironless element Beleza então aqui eu vou chamar essa variável de hospedagens E aí agora eu vou simplesmente jogar um for porque poxa não vai pegar todas as hospedagens todos os bloquinhos de cada hospedagem então para hospedagem dentro de hospedagens dois pontos que que eu vou fazer muito tranquilo basta eu vim aqui pegar todo esse conteúdo Opa até aqui ó e aperta Tab ou seja ele vai pegar todo esse conteúdo e jogar dentro do foco bom então agora ele vai automatizar aqui a nossa rotina certo é só você dá uma identificação aí no seu visual Studio Code ou seja qual foi a ideia que você tem a preferência vou até apagar o melhor comentar esse print aqui eu não quero que toda vez ele traga aquele HTML todo né Eu só quero que ele traga as informações que a gente já pegou e aqui no final eu vou dar outro print só para dar uma quebra de linha e aí a gente conseguir ver a divisão entre cada uma dessas hospedagens se claro a gente conseguir chegar aí no resultado que a gente quer né então já rodei aqui vamos só aguardar então e olha só o pessoal que fantástico finalmente terminou aqui execução a gente tem aqui a informação de cada um das hospedagens a primeira flat 104 a segunda estúdio moderno imobiliado né seja dá uma olhada aqui ó a gente vai ver que tem ó estúdio moderno imobiliado condomínio inteiro então tem aqui em detalhes o condomínio inteiro república tá lá informação 103 por noite então vamos ver essa informação aqui Não é fantástico isso? A gente conseguiu integrar Selenium com o Brief.Soup, que de outra forma a gente jamais teria conseguido aqui nessa página do Airbnb em particular e em várias outras que você vai encontrar esse desafio.

Tranquilo? O que a gente pode fazer? A gente poderia salvar todas essas informações dentro de uma lista de listas. Por exemplo, eu vou chamar aqui de... Por exemplo, aqui em cima eu vou criar uma lista chamada dados hospedagens.

E aí eu vou criar uma lista com isso aqui, tá? Dados hospedagens. Aí aqui dentro, o que a gente poderia fazer? Vim aqui no finalzinho, dados hospedagens ponto append. Então a gente vai appendar.

E aí a gente vai appendar o quê? A descrição. Então olha só, vou criar aqui uma lista com descrição, com a UUrl da hospedagem. O que mais?

Os detalhes da hospedagem vai vir para cá. E por fim, a gente vai ter o preço da hospedagem. Beleza?

Então tudo isso eu vou jogar dentro de uma lista de listas. Se você lembra bem, no vídeo, eu não vou lembrar exatamente qual foi o número, mas um vídeo que a gente fez um webscrap na página do Mercado Livre, né? A gente fez algo extremamente parecido. Se você acompanhou aquele vídeo lá, você vai conseguir entender esse aqui, ó, numa boa.

A gente está criando uma lista de listas, basicamente uma matriz que vai ter, cada linha vai ser uma hospedagem diferente com cada uma dessas informações. E daí aqui no final o que que eu posso fazer eu posso converter isso para um data frame então ó em prima para mim pd. Data frame Claro eu não importei aqui o pandas né então aqui em cima eu vou ter que importar o panda se você não conhece o pandas tem vídeo aqui no canal falando sobre pandas tá tem um curso aí bem legal sobre data Science Compile então aqui importei o transporte pandas SPD vou descer aqui ó e vou transformar num data frame, ou seja, numa tabelinha lá do Pandas. E aí eu passo dados hospedagens aqui dentro, e aí eu digo quais são os nomes das colunas.

Os nomes que eu quero dar para as colunas são descrição, então descrição, vírgula, UUrl, então UUrl é o link, como você preferir. Aqui eu vou colocar detalhes, que é a próxima coluna, e para a gente terminar, a última coluna é preço, beleza? Acabamos de converter aí para um data frame. Eu vou rodar aqui para a gente ver se tudo vai funcionar perfeitamente.

E depois... Opa, escrevi errado aqui. Detalhes, né? E depois a gente vai jogar isso aqui em uma planilha, salvar em um arquivo.

Beleza? Pronto, pessoal. Terminou aqui a execução. E como a gente pode ver, ele criou o data frame.

Só que aí eu cometi um pequeno erro aqui, um pequeno deslize que a gente já vai corrigir, tá? Como você pode ver, ele colocou uma lista vazia aqui em descrição e UUrl. Por quê?

Porque, na realidade, a descrição... E a UUrl, a gente tem que acessar esse atributo content. Vamos tentar corrigir isso? Como é que a gente corrigiria? Aqui eu vou dizer, ó, hospedagem descrição, recebe hospedagem descrição na posição content, beleza?

Então, aqui agora ele já vai salvar essa variável com aquela informação que está dentro do atributo content. Mesma coisa eu vou fazer com a UUrl. Então, é só eu mudar aqui de descrição para UUrl.

Opa, UUrl, beleza? e claro além disso que que eu vou ter que fazer aqui eu vou ter que tirar esse conto daqui beleza vou tirar esse conto daqui e agora eu vou salvar e executar e provavelmente nesse caso aqui vai dar certo tá beleza galera finalmente a gente conseguiu chegar no resultado que a gente queria né então agora a gente tem aqui um data frame que Tem descrição, tem a UUrl, tem o que mais? Vai ter aqui detalhes e tem o preço, tá? Então, o que a gente vai fazer aqui para finalizar?

E agora, definitivamente, tá? O vídeo já deve estar um pouco longo por aí, mas, ó, eu vou salvar isso aqui em uma variável chamada dados, que vai ser o nosso data frame, certo? E agora, para fechar, dados.to, sei lá, eu vou colocar em CSV, tá bom? Você pode ficar à vontade aí para salvar em outro formato.

E aí, eu vou salvar aqui hospedagens. o ponto csv beleza e aí eu vou colocar aquele parâmetro index como sendo falsa se você viu os vídeos aqui sobre pandas no canal você deve saber o motivo de eu tá colocando isso aqui né basicamente eu vou evitar que ele salve o índice né 012 e por aí vai então vou executar aqui para fechar tá e vamos ver aí como vai se dar essa execução beleza a pessoal um detalhe importante que eu queria destacar aqui no vídeo tá e quando eu alterei para ponto com.br o site do Airbnb em alguns casos ele retornava um erro aqui para mim provavelmente isso deve ser porque alguma coisa do HTML está retornando um valor diferente tá aparecendo com valor diferente então se isso acontecer para você a dica que eu te dou é utiliza só. Com mesmo beleza ou dá uma inspecionada para ver o que que pode estar diferente como a gente tá no momento do vídeo aqui agora eu não vou fazer essa mudança beleza mas ó eu coloquei aqui. Com simplesmente E aí ele retornou aqui ó todos os dados para gente que a gente já tinha feito antes e agora ele deve realmente ter salvo aqui ó o nosso arquivo CSV e você pode ver que de fato Olha só hospedagens.com.br apareceu aqui e a gente tem todos esses dados agora salve na nossa máquina tanto é que se eu tentar abrir esse arquivo aqui você vai ver olha só tô tentando abrir aqui no Libre Office Beleza então já apareceu aqui para mim tá bom ok e olha só Que maravilha, pessoal.

A gente tem ao todo aqui 20 hospedagens, tá? A gente poderia pedir aqui algumas coisas a mais, tipo fazer a rolagem da página ou qualquer coisa desse tipo, mas como esse vídeo já está bastante longo, eu vou parar por aqui. Beleza? Bom pessoal, então por hoje é isso, era isso que eu queria te mostrar, espero que você tenha curtido o vídeo, se você gostou não esqueça de deixar o seu like aqui embaixo e também de se inscrever no canal, porque isso é algo muito importante para mim e para você também, porque você vai poder acompanhar vários outros conteúdos relacionados a Python, a ciência de dados e a webscrap, beleza?

Então, por hoje é isso, te aguardo no nosso próximo vídeo, bons estudos e até a próxima!