如何使用Selenium Python通过XPath或类名获取网页中所有同class元素
解决获取所有place_box元素的问题
要获取页面上所有class为place_box的元素,你需要使用复数形式的查找方法,而非单个元素的查找方法,以下是几种可行方案:
方法1:使用find_elements_by_class_name(复数形式)
直接将你原代码中的find_element_by_class_name改为复数形式,即可返回所有匹配的元素列表:
elements = driver.find_elements_by_class_name("place_box")
遍历列表即可逐个获取每个元素的信息:
for elem in elements: # 获取元素文本内容 print(elem.text) # 若需获取元素属性(比如链接),可使用get_attribute方法 # print(elem.get_attribute("href"))
方法2:使用XPath查找所有匹配元素
如果之前XPath写法有误,正确的XPath表达式应匹配所有class为place_box的元素,注意同样使用复数的find_elements方法:
from selenium.webdriver.common.by import By elements = driver.find_elements(By.XPATH, "//*[@class='place_box']")
处理动态加载的情况
如果页面中的place_box元素是动态加载的,需要先等待元素全部加载完成再查找,可结合WebDriverWait实现:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待最多10秒,直到所有place_box元素加载完成 wait = WebDriverWait(driver, 10) elements = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "place_box")))
内容的提问来源于stack exchange,提问作者crashixx
相关产品推荐
相关产品推荐

