Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Extrair textos de site sem tabela

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
Bruno Capelli
Colaborador
Colaborador
Mensagens: 52
Registrado em: Ter Set 01, 2015 11:16 am

Extrair textos de site sem tabela

Mensagem por Bruno Capelli »

Boa Tarde pessoal.

Estou realmente travado com um problema, preciso entrar e extrair os dados de uma pagina da internet neste modelo abaixo:
https://www.casasbahia.com.br/mondial/b
acontece que nesta pagina não ha tabelas apenas imagem, textos e preços, preciso apenas dos textos (nomes dos produtos) e preços (dos produtos). de todos os produtos nao apenas de uma unica pagina pois ha um botao no final da mesma que leva pra uma segunda depois terceira depois quarta e por diante!
Alguem consegue me ajudar, por favor?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Extrair textos de site sem tabela

Mensagem por Raygsson »

Como você esta tentando extrair essas informações? mostre o seu código
O site esta bem estruturado, as informações estão numa lista de produtos, com classes e tudo.
Inicialmente tem apenas 21 produtos do total de 2.635, vai carregando aos poucos conforme clica no botão 'Ver Mais Produtos".
No Internet Explorer o site não abriu bem, é viável fazer a rotina pelo Chrome (Selenium).
Analise.jpg
Analise.jpg (228.38 KiB) Exibido 4491 vezes
Outra opção é fazer a chamada pra API das Casas Bahia, uma chamada pra cada página de resultados (21 ou até 100 produtos por vez) e fazer a leitura do texto retornado/JSON , nesse caso não precisa abrir navegador. A URL que retorna os resultados é essa https://prd-api-partner.viavarejo.com.b ... casasbahia
API.JPG
API.JPG (393.96 KiB) Exibido 4487 vezes


Bruno Capelli
Colaborador
Colaborador
Mensagens: 52
Registrado em: Ter Set 01, 2015 11:16 am

Re: Extrair textos de site sem tabela

Mensagem por Bruno Capelli »

Raygsson, muito obrigado pelo apoio!

eu nao tenho muita experiencia, o codigo que montei extrai apenas um item por vez, consegui desenvolver usando o selenium vba. mas abaei descartando pq nao era nem um pouco vialvel.

o site esta estruturando os dados de um jeito que nao facilita muito, eu gostaria se possivel de um codigo que traga apenas a descricao de todos os produtos e o preco. vc acha que é possivel?


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Extrair textos de site sem tabela

Mensagem por Raygsson »

O que vai demorar mais será você clicar varias vezes no botão pra carregar todos os produtos.

Código: Selecionar todos

Sub Exemplo()
On Error Resume Next
Dim driver As ChromeDriver
Set driver = New ChromeDriver

driver.Get "https://www.casasbahia.com.br/mondial/b"

MsgBox "Antes de prosseguir carregue todos os produtos na página de resultados!", vbInformation, "Aviso"

Set produtos = driver.FindElementsByXPath("//li[@class='ProductCard__Wrapper-sc-2vuvzo-6 iWpyBK']")

For Each produto In produtos
    desc = produto.FindElementByCss("p[class='ProductCard__Title-sc-2vuvzo-0 kCWdGv']").Text
    preço = produto.FindElementByCss("span[class='ProductPrice__PriceValue-sc-1tzw2we-6 bWkccE']").Text
    Debug.Print desc & " - " & preço
Next

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Bruno Capelli
Colaborador
Colaborador
Mensagens: 52
Registrado em: Ter Set 01, 2015 11:16 am

Re: Extrair textos de site sem tabela

Mensagem por Bruno Capelli »

Raygsson, cara testei o codigo em modulo mas nao consegui faze-lo trazer a relçao para o excel me desculpa a ignorancia mas poderia mas uma vez me auxilar?

Eu copiei o codigo colei em um novo modulo e gerei
No site cliquei varias vezes no botao "ver mais produtos" e so então dei ok na msgbox
mas pra onde vai a extração?
O codigo começa e termina sem erros mas nao traz nada do site!
Me ajuda?


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Extrair textos de site sem tabela

Mensagem por Raygsson »

No exemplo os resultados estão sendo exibidos na Janela de inspeção de variáveis (debug.print), não está colocando na planilha. Você precisa apenas ajustar essa parte , no loop For preencher as variáveis Desc e Preço na sua planilha. Não esqueça de a cada volta incrementar uma linha pra preencher abaixo da anterior.


Bruno Capelli
Colaborador
Colaborador
Mensagens: 52
Registrado em: Ter Set 01, 2015 11:16 am

Re: Extrair textos de site sem tabela

Mensagem por Bruno Capelli »

Raygsson, Bom dia!

Acho que consegui, muito obrigado, vc poderia me ajudar apenas com mais uma questão, por favor?
Como eu faço para achar estes valores:

driver.FindElementsByXPath("//li[@class='ProductCard__Wrapper-sc-2vuvzo-6 iWpyBK']")
desc = produto.FindElementByCss("p[class='ProductCard__Title-sc-2vuvzo-0 kCWdGv']").Text
preço = produto.FindElementByCss("span[class='ProductPrice__PriceValue-sc-1tzw2we-6 bWkccE']").Text

Pq irei precisar fazer pesquisa em outros sites!

Grato


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Extrair textos de site sem tabela

Mensagem por Raygsson »

Esses elementos mudam em cada site, precisa inspecionar pelo navegador.
Pra conseguir desenvolver os Web Scraping da vida é essencial aprender a analisar o HTML da pagina e manipular os elementos com Selenium. No YouTube tem bastante material ensinando, vale a pena passar algumas horas por lá rs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder