我正在尝试编写一个Python脚本,该脚本将从网页自动下载表格。当我只是转到指定的url地址时,表未完全加载。我必须单击链接“加载更多”。我试图通过脚本来做到这一点。
delay = 2
driver = webdriver.Chrome('chromedriver')
driver.get("url")
time.sleep(delay + np.random.rand() )
click_except = 0
while click_except == 0:
try:
driver.find_element_by_id("id").click()
time.sleep(delay + np.random.rand() )
except:
click_except = 1
time.sleep(delay + np.random.rand() )
web = driver.find_element_by_id("id_table")
str = (web.text)
以前可以使用,但现在不起作用...相同的代码!我搬到另一个国家,并且使用了不同的Wi-Fi。这会产生影响吗?实际上,单独和手动处理时,带有click命令的行仍然有效。它不与While and Try周期一起使用。知道有什么问题吗?或任何想法,如何更好地进行编程?
延迟应使网页有足够的时间上载。
答案 0 :(得分:0)
我建议您避免等待一段时间,最好等待特定元素并且硒支持它,请检查:https://selenium-python.readthedocs.io/waits.html#explicit-waits
您可以执行以下操作:
driver = webdriver.Chrome('chromedriver')
driver.get('url')
wait_for_id('id').click()
str = wait_for_id('id_table').text
def wait_for_id(identifier):
"""
It waits for web element with identifier
:return: found selenium web element
"""
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, identifier))
)
return element