语言: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]
添加回答
举报
0/150
提交
取消