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

语言:Python

工具:Selenium

浏览器:Chrome


嗨,这是我第一次尝试编码,以使我的生活更轻松。我目前正在尝试从客户的供应商门户中删除一张桌子。这是为了自动化一个非常手动且耗时的过程。


我已经确定了我想要获取的表的 XPATH。下面是我的代码片段以及我如何尝试抓取它。


当我第一次执行循环时,列表仅包含最后一行的信息。所以我添加了 来print(len(rows))查明是否确实附加了任何内容。令我沮丧的是,它只打印 1,1,1,1,1,1 直到循环结束。我相信列表中的内容正在被替换,而不是被附加。


我不确定我哪里做错了,希望得到您的建议。


另外,如果您有时间的话,我还想请教一些指导。


由于我要在抓取表格后进行一些清理,所以我应该抓取每一列并将每一列分配给一个变量,还是应该像我现在所做的那样抓取每一行。


#Identify number of rows

rows = 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 header

for 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))


慕后森
浏览 97回答 1
1回答

浮云间

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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python