You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blue Prism中如何遍历网页表格多行并点击详情链接

嘿,这个动态表格的循环处理问题我熟!你已经搞定了最核心的判断和数据复制部分,剩下的就是把整个流程串成动态循环就行,我给你拆解下思路和具体代码示例:

核心思路

不管表格有多少行,我们只需要先获取所有行的集合,然后逐个遍历每一行:

  • 对每一行,先定位行内的详情链接并点击
  • 执行你已有的判断逻辑
  • 返回表格页后,根据判断结果决定是否提取当前行数据
  • 继续处理下一行,直到所有行遍历完成
具体实现(以Selenium Python为例)

这里要注意一个坑:跳转页面后,原来的行元素会变成「失效状态(Stale Element)」,所以返回表格页后需要重新定位当前行,我在代码里做了处理:

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

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("你的表格页面URL")

# 存储最终数据的列表
your_data_list = []

# 先定位表格的tbody(如果表格有表头,tbody里的就是数据行)
table_body = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "tbody"))
)
# 获取所有数据行
rows = table_body.find_elements(By.TAG_NAME, "tr")

# 遍历每一行
for index, _ in enumerate(rows):
    # 每次遍历前重新定位当前行,避免页面跳转后元素失效
    current_row = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.TAG_NAME, "tr"))
    )[index]
    
    # 定位当前行内的详情链接(这里用TAG_NAME示例,你可以换成更精准的定位,比如By.CLASS_NAME)
    detail_link = current_row.find_element(By.TAG_NAME, "a")
    detail_link.click()
    
    # ----------------------
    # 执行你已有的判断逻辑(步骤3)
    # 比如:检查详情页里某个元素是否存在/符合条件
    should_keep = your_judge_logic_here()  # 替换成你的代码
    # ----------------------
    
    # 返回表格页面
    driver.back()
    # 等待表格页重新加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "tbody"))
    )
    
    # 如果需要保留,提取当前行数据
    if should_keep:
        current_row = WebDriverWait(driver, 10).until(
            EC.presence_of_all_elements_located((By.TAG_NAME, "tr"))
        )[index]
        # 提取行内所有单元格的文本
        row_data = [td.text.strip() for td in current_row.find_elements(By.TAG_NAME, "td")]
        your_data_list.append(row_data)

# 关闭浏览器
driver.quit()
补充注意事项
  • 精准定位链接:如果行内有多个链接,一定要用更精准的定位方式,比如根据链接的class属性(By.CLASS_NAME, "detail-link")或者文本(By.LINK_TEXT, "查看详情"),避免点错。
  • 等待元素加载:不管是表格页还是详情页,都要加等待(比如WebDriverWait),确保元素加载完成后再操作,避免报错。
  • 处理分页(如果有):如果表格有多页,你需要在遍历完当前页所有行后,判断是否有下一页,点击下一页后重复上述遍历流程。
用Playwright实现的版本(可选)

如果你用Playwright,代码会更简洁,它自带的定位器能自动处理元素失效问题:

from playwright.sync_api import sync_playwright

your_data_list = []

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("你的表格页面URL")
    
    # 获取所有数据行的数量
    row_count = page.locator("tbody > tr").count()
    
    for index in range(row_count):
        # 定位当前行(用nth-child索引,从1开始)
        current_row = page.locator(f"tbody > tr:nth-child({index+1})")
        # 点击详情链接
        current_row.locator("a").click()
        
        # ----------------------
        # 执行你的判断逻辑
        should_keep = your_judge_logic_here(page)  # 传入page对象操作详情页
        # ----------------------
        
        # 返回表格页
        page.go_back()
        # 等待表格加载完成
        page.wait_for_selector("tbody > tr")
        
        # 提取数据
        if should_keep:
            row_data = current_row.locator("td").all_text_contents()
            your_data_list.append([text.strip() for text in row_data])
    
    browser.close()

内容的提问来源于stack exchange,提问作者Sigourney Heerink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:11