Buscador de preço com selenium.

Python

Automação Comercial

Análise de dados

29/09/2024

Olá, recentemente iniciei meus estudos no quesito automação web, porém tenho sentido uma certa dificuldade com a filtragem de elementos.

Estou em um projeto pessoal aonde pretendo fazer um código que fique me atualizando os valores de um produto especifico, antes de ir para parte de manter ele persistentemente atualizando esse valor, estou na etapa de conseguir esse valor primeiramente.


Bibliotecas importadas:


from pyautogui import press
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from time import sleep




Definição do service e options:

service = Service()

options = webdriver.ChromeOptions()

driver = webdriver.Chrome(service= service, options= options)




Meu interesse encontra-se nesse xpath:

<p id="valVista" class="val-prod valVista">R$ 1.449,90</p>




driver = webdriver.Chrome(service= service, options= options)

driver.get('url')

sleep(3)

pyautogui.press('esc')    #### Se fez necessario a utilziação do pyautogui pois sempre que a pagina abre aparece uma mensagem flutuante.

valor = driver.find_elements(By.XPATH, '//*[@id="valVista"]')       #### Tentei filtrar pela class, id e até pela tag.


#### Quando utilizo desta maneira ocorre o erro:  [21644:22272:0929/163738.954:ERROR:command_buffer_proxy_impl.cc(324)] GPU state invalid after WaitForGetOffsetInRange.

for item in valor:         
    print(item.text)          


#### Quando tento utilizar desta forma ocorre:           


texto = valor[0].text    #### Não me retorna nada.

print(texto)

ou

print(valor.text)          #### #### AttributeError: 'list' object has no attribute 'text'



#### Sem a conversão de texto ele me retorna:

 [<selenium.webdriver.remote.webelement.WebElement (session="e407ce5ede95a03a47d7292e1562dc5f", element="f.EF146E314D266915EA1C9EAC6154ABE9.d.23B2971D2EDD977A661608976BE9DCE3.e.116")>, <selenium.webdriver.remote.webelement.WebElement (session="e407ce5ede95a03a47d7292e1562dc5f", element="f.EF146E314D266915EA1C9EAC6154ABE9.d.23B2971D2EDD977A661608976BE9DCE3.e.117")>]






Embora minha inexperiência seja evidente, ficaria imensamente grato se pudessem me ajudar.
Victor Cézar

Victor Cézar

Curtidas 0

Respostas

Victor Cézar

Victor Cézar

29/09/2024

Resolvido, aparentemente o .find_elements(), estava retornando uma lista, retornando conflito ao transformar em .text, troquei por .find_element() e resolveu, aparentemente foi isso, se alguém souber explicar agradeço.
GOSTEI 0
POSTAR