Eu não consigo pegar imagem nem estrela do produto esse site, como eu faço? https://www.worten.pt/gaming/gaming-pc/portateis-gaming
Eu não consigo pegar imagem nem estrela do produto esse site, como eu faço? https://www.worten.pt/gaming/gaming-pc/portateis-gaming
Olá Celio,
Nesse caso o site não carrega as imagens diretamente, após a página abrir é que um código javascript carrega as imagens. Infelizmente utilizando web scraping simples não dá pra pegar conteúdo carregado por javascript.
Mas existem alternativas com algumas ferramentas mais avançadas como o selenium. O selenium simula um navegador completo e carrega até javascript.
Se tiver algum interesse em tentar utilizar o selenium, nesse tópico eu fiz um código exemplo de como utilizar.
Espero ter ajudado, qualquer dúvida é só falar!
Tentei executar código com ferramenta selenium pede para instalar o :
WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Entrei no site (https://sites.google.com/a/chromium.org/chromedriver/home)eu não vi chromedriver para win64 so há para win32, o que eu faço?
Só tem versão chromedriver_win32, Baixei mesmo assim mas eu não estou a conseguir instalar
Acredito que a versão 32 funcione sem problemas, mas não tenho certeza.
Uma alternativa é utilizar o driver do Firefox, nesse link abaixo você pode baixar a versão 64bits:
https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-win64.zip
Recomendo você executar o seu código utilizando o Google Colaboratory pois assim você não vai precisar instalar nem configurar nada, é tudo online.
No link abaixo eu tenho um código com selenium funcionando que você pode usar como base:
https://colab.research.google.com/drive/1VYZoQ20U_bvztUPlc506csMTvfmqT4G0
Para começa eu não estou a usa "Google Colaboratory" porque eu não gosto eu sempre usei Anaconda para todos os cursos ,
"Acredito que a versão 32 funcione sem problemas, mas não tenho certeza." também eu acredito, mas como fazer que anaconda reconheci chromedriver no meu PC? Até pesquisei alguns vídeos youtube não vi com linguagens Python Eu acho que esse teu código: falta um linha de código que localiza a pasta a onde esta chromedriver no PC
Mas eu não seio fazer
from selenium import webdriver
from bs4 import BeautifulSoup
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome("chromedriver", options=options)
url = "https://www.vivareal.com.br/aluguel/?__vt=rpci:a#area-ate=100&onde=BR-Rio_de_Janeiro-NULL-Rio_de_Janeiro-Zona_Sul-Leblon&preco-ate=10000&tipos=consultorio_comercial,edificio-residencial_comercial,granja_comercial,galpao_comercial,imovel-comercial_comercial,loja_comercial,lote-terreno_comercial,ponto-comercial_comercial,sala_comercial"
driver.implicitly_wait(30)
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
total = soup.find('strong', {'class' : 'results-summary__count js-total-records'})
print("Total de resultados com selenium:", total.string)
Fiz alguns testes para executar o selenium no windows utilizando o driver do Firefox que eu mencionei acima. Antes de tudo você tem que baixar o driver do Firefox e descompactar em uma pasta.
Agora você pode utilizar o selenium, simplificando um pouco o meu código anterior e adaptando para o seu caso fica assim:
from bs4 import BeautifulSoup
from selenium import webdriver
# Em executable_path coloque o caminho do driver baixado
driver = webdriver.Firefox(executable_path="C:\selenium\geckodriver.exe")
driver.implicitly_wait(30)
url = 'https://www.worten.pt/gaming/gaming-pc/portateis-gaming'
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
anuncio = soup.find('div', {"id": "products-list-block"}).findAll('div', class_="w-product__wrapper")
for anuncios in anuncio:
imagem_tag = anuncios.find('figure', {'class': 'w-product__image'}).find('img')
imagem = 'https://www.worten.pt' + imagem_tag['data-src'] if imagem_tag else '-'
print(imagem)
driver.quit()
Acabei encontrando dentro do html do site o local onde o javascript pega o link das imagens, então é possível também pegar o link das imagens sem utilizar o selenium.
Nesse caso seria um código parecido com o anterior, mas sem utilizar o selenium para carregar o site:
# Dentro do for dos anúncios
imagem_tag = anuncios.find('figure', {'class': 'w-product__image'}).find('img')
imagem = 'https://www.worten.pt' + imagem_tag['data-src'] if imagem_tag else '-'
pcg['imagem'] = imagem
Muito obrigado , ajudastes muito