from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pandas as pd
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
URL = 'https://gemelnet.cma.gov.il/views/dafmakdim.aspx'
driver.get(URL)
time.sleep(2)
review=WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='knisa']")))
review.click()
table=WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='Aaaa89455bbfe4387b92529246ea52dc6114']//font"))).text()
print(table)
我试图提取表,但他们给予我raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
我如何解决这些错误的任何建议。
请告诉我什么错误,我会这样做,这是页面链接https://gemelnet.cma.gov.il/views/dafmakdim.aspx
table
1条答案
按热度按时间ovfsdjhp1#
这里有几个问题需要改进:
1.您尝试使用的
Aaaa89455bbfe4387b92529246ea52dc6114
类是动态值。它不能用作定位器。1.你点击进入系统的第一个元素-你应该等待元素的可点击性,而不仅仅是可见性。这些条件几乎是相似的,但是因为你要点击元素的可点击性应该被检查。可见性通常在我们要从该元素中提取文本时使用。
1.无需在
review=WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='knisa']")))
之前添加time.sleep(2)
1.可以直接对
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='knisa']")))
返回的web元素对象应用点击,不需要保存到review
临时变量中。1.您试图打印的表格最初显示“正在加载”内容。因此,为了克服这个问题,我等待其中一列出现,再添加一些延迟,然后获得整个表格的文本。
不理想,但可以实现以下功能:
输出为: