[英]error Element is not clickable at point (183, 798) web scraping python selenium
我是使用 python 的新手,我遇到了问题。 我正在尝试创建一个 web 循环以获取信息,但我的循环需要单击两次。 我正在使用的页面是: https://www.becual.com/oportunidades并且对于每个反转机会,我需要单击然后获取信息“credito solicitado”和“empresa pagadora”。 这是我用于循环的代码。
firmas = []
for i in range(0, size):
detalles = browser.find_elements_by_xpath('//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]')
detalles[i].click()
time.sleep(3)
monto = browser.find_element_by_css_selector('span:nth-last-child(3)').text
garantia = browser.find_element_by_xpath('/html/body/app-root/div[2]/becual-opportunity-detail/div/div[2]/div/div[3]/div/div[1]/ul/li[3]/a')
garantia.click()
time.sleep(3)
empresa = browser.find_element_by_xpath("/html/body/app-root/div[2]/becual-opportunity-detail/div/div[2]/div/div[3]/div/div[2]/div[3]/div/div[2]/div[2]/strong").text
browser.back()
time.sleep(10)
firmas.append({'Monto': monto, 'Empresa': empresa})
我的循环一直工作到第 3 号。但后来它说它是不可点击的。 我只点击第三个元素,点击使用用 mi 循环代码编写的 xpath ('//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]') . 我不明白为什么循环不起作用,但单独做却可以。
您可以使用requests
从外部 API 加载数据:
import json
import requests
from bs4 import BeautifulSoup
url = ' https://api.becual.com/api/oportunidad?incluirHistorico=false&page=1&limit=10000'
data = requests.get(url).json()
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for data in data['data']:
o = requests.get('https://api.becual.com/api/oportunidad/' + data['idOportunidad']).json()
# uncomment to print all data about opportunity:
# print(json.dumps(o, indent=4))
nombre = o['garantias'][0]['nombreEmpresa'] if o['garantias'] else '-'
print('{:<15} {:<15} {}'.format(o['idOportunidad'], o['montoCredito'], nombre))
印刷:
CR1808213969 16000000 Altamira Chile
CR1712292810 10400000 Jej Ingeniería
CR1712202756 4800000 Soc. Agricola Requingua
CR1712052601 15583739 Soc. Agricola Requingua
CR1801042850 7200000 International Paper Cartones
CR1809144426 707264 CONSTRUCTORA METROPOLITANA S.A.
CR1710102345 3500000 Soc. Agricola Requingua
CR1712262781 8700000 Compañía Industrial el Volcán
CR1711072497 4200000 Viña Santa Ema
CR1709272302 8100000 Soc. Agricola Requingua
CR1712272789 10400000 Jej Ingeniería
CR1802023015 11100000 SGS Chile
CR1801182911 5500000 Soc. Agricola Requingua
CR1711022486 6100000 International Paper Cartones
CR1711102516 8723983 International Paper Cartones
...and so on.
元素未在 DOM 中正确加载,在 state 中未正确加载以接受点击。 尝试下面的代码等待元素可点击
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 30).until(
EC.element_to_be_clickable((By.XPATH, '//div[@class="col-xs-12 col-sm-3 col-md-3 imagen-oportunidad"]')))
element.click();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.