为了账号安全,请及时绑定邮箱和手机立即绑定

尝试从供应商门户中抓取表格,但循环并未附加列表。使用 Python 和 Selenium

尝试从供应商门户中抓取表格,但循环并未附加列表。使用 Python 和 Selenium

慕后森 2023-12-09 16:46:20
语言:Python工具:Selenium浏览器:Chrome嗨,这是我第一次尝试编码,以使我的生活更轻松。我目前正在尝试从客户的供应商门户中删除一张桌子。这是为了自动化一个非常手动且耗时的过程。我已经确定了我想要获取的表的 XPATH。下面是我的代码片段以及我如何尝试抓取它。当我第一次执行循环时,列表仅包含最后一行的信息。所以我添加了 来print(len(rows))查明是否确实附加了任何内容。令我沮丧的是,它只打印 1,1,1,1,1,1 直到循环结束。我相信列表中的内容正在被替换,而不是被附加。我不确定我哪里做错了,希望得到您的建议。另外,如果您有时间的话,我还想请教一些指导。由于我要在抓取表格后进行一些清理,所以我应该抓取每一列并将每一列分配给一个变量,还是应该像我现在所做的那样抓取每一行。#Identify number of rowsrows = driver.find_elements(By.XPATH, "//*[@id='docflow.list_DocFlowList']/tbody/tr/td/table/tbody/tr")row_nos = len(rows)#Get text from rows variable#Range starts from 2 to exclude headerfor i in range(2, row_nos):    row = driver.find_elements(By.XPATH, "//*[@id='docflow.list_DocFlowList']/tbody/tr/td/table/tbody/tr["+str(i)+"]")    row_text = []    for content in row:        row_text.append(content.text)    print(len(row_text))
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

row_text = []应该在for循环之外声明。但是,您的代码结构过于复杂


它可以被固定和简化如下:


rows = driver.find_elements(By.XPATH, "//*[@id='docflow.list_DocFlowList']/tbody/tr/td/table/tbody/tr")[1:]

row_text = [row.text for row in rows]


查看完整回答
反对 回复 2023-12-09
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信