【发布时间】:2019-07-16 19:31:26
【问题描述】:
我已经在 python 中结合 selenium 编写了一个脚本来单击 search 按钮以填充结果,然后从其登录页面解析来自类 ya_result-item 的不同链接,然后继续单击下一页按钮同时解析其他页面的链接,直到没有更多的按钮可以点击。
但是,我的脚本只能从它的第一页解析链接,然后单击下一页按钮,然后卡住了。
如何让我的脚本在解析链接时不断点击下一页按钮?
这是我的尝试:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://www.yogaalliance.org/Directory?Type=School"
def get_page_content(driver,link):
driver.get(link)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.ya_directory-search-button"))).click()
while True:
for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[id^='ya_result-item'] a[href^='/SchoolPublicProfile']"))):
print(item.get_attribute("href"))
try:
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[title*='next page']"))).click()
wait.until(EC.staleness_of(item))
except Exception:break
if __name__ == '__main__':
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
get_page_content(driver,url)
【问题讨论】:
-
您是否遇到任何异常或浏览器冻结?你说的“然后卡住”是什么意思?
-
这是错误(简洁)
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Other element would receive the click。
标签: python python-3.x selenium selenium-webdriver web-scraping