如何在Selenium Python中遍历div并提取电话号码
批量提取AG Grid中inboundPhoneNumber列的电话号码
你原来的代码只返回单个元素,是因为find_element只会匹配第一个符合条件的节点。要批量提取,只需做以下调整:
核心修改点
- 用
find_elements(复数形式)替代find_element,它会返回所有匹配的元素列表 - 加入显式等待,适配AG Grid的动态渲染特性,避免因元素未加载完全导致提取为空
完整实现代码
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 # 初始化浏览器驱动(以Chrome为例,需确保驱动路径配置正确) driver = webdriver.Chrome() try: # 等待目标列所有单元格加载完成,超时时间10秒 phone_cells = WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div[col-id='inboundPhoneNumber']")) ) # 遍历提取每个单元格的电话号码 for index, cell in enumerate(phone_cells, start=1): phone_num = cell.text.strip() if phone_num: print(f"第{index}个号码: {phone_num}") except Exception as err: print(f"提取出错: {str(err)}") finally: # 无论成功失败,关闭浏览器 driver.quit()
额外注意事项
- 若AG Grid启用了分页,需要添加分页遍历逻辑:提取当前页数据后,模拟点击下一页按钮,重复提取直到最后一页
- 可通过浏览器开发者工具(F12)确认目标单元格的CSS选择器是否准确,部分AG Grid结构中单元格会带有
ag-cell类,此时选择器可改为div.ag-cell[col-id='inboundPhoneNumber']
内容的提问来源于stack exchange,提问作者Sakib ovi
相关产品推荐
相关产品推荐

