我尝试使用Python 3.6和Selenium从表中获取数据。我试图从中获取的其中一个表有多行。所以,我想从每一行得到第9列。
我在这个网站上搜索过,发现了一些我能够适应几乎工作的代码。
table_id = driver.find_element(By.ID, 'ctl00_mid_rptItems_ctl00_gvItems')
rows = table_id.find_elements(By.TAG_NAME, "tr")
for row in rows:
cols = row.find_elements(By.TAG_NAME, "td")
for col in cols:
print (cols[8].text)
它从我想要的列中吐出正确的数据,但我遇到的问题是它遍历每一行16次,这是表中的列数,并打印每个数据点16倍。
我尝试调整上面的代码,只需删除" for col"环
table_id = driver.find_element(By.ID, 'ctl00_mid_rptItems_ctl00_gvItems')
rows = table_id.find_elements(By.TAG_NAME, "tr")
for row in rows:
cols = row.find_elements(By.TAG_NAME, "td")
print (cols[8].text)
但是,这会给出错误" Traceback(最近一次调用最后一次): 文件" C:\ Users \ Documents \ PleaseTest_R1.py",第91行,在中 print(cols [8] .text) IndexError:列表索引超出范围
关于如何让这个循环起作用的任何想法?
非常感谢你的帮助! : - )
答案 0 :(得分:0)
我可以建议你使用Javascript,通过你的python程序执行这个JavaScript,它会工作。
Systax从细胞中获取内容,
document.getElementId("tableid").rows[3].cells[4].innerHTML
你可以通过
获得行数document.getElementId("tableid").rows.length