Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Extrair textos de site sem tabela
-
- Colaborador
- Mensagens: 52
- Registrado em: Ter Set 01, 2015 11:16 am
Extrair textos de site sem tabela
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?
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?
Re: Extrair textos de site sem tabela
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). 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
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). 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
-
- Colaborador
- Mensagens: 52
- Registrado em: Ter Set 01, 2015 11:16 am
Re: Extrair textos de site sem tabela
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?
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?
Re: Extrair textos de site sem tabela
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
-
- Colaborador
- Mensagens: 52
- Registrado em: Ter Set 01, 2015 11:16 am
Re: Extrair textos de site sem tabela
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?
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?
Re: Extrair textos de site sem tabela
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.
-
- Colaborador
- Mensagens: 52
- Registrado em: Ter Set 01, 2015 11:16 am
Re: Extrair textos de site sem tabela
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
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
Re: Extrair textos de site sem tabela
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
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