使用 Python Selenium 遍历 table 行文本
Iterating through table rows text with Python Selenium
尝试迭代每一行以分别为所有行创建列表。
HTML table 是;
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<th>Name</th>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>John</td>
<td>January</td>
<td></td>
</tr>
<tr>
<td>Smith</td>
<td>February</td>
<td></td>
</tr>
<tr>
<td>Ken</td>
<td>March</td>
<td></td>
</tr>
<tr>
<td>Dan</td>
<td>April</td>
<td></td>
</tr>
</table>
</body>
</html>
我的 python 代码是:
driver.get("file:///C:/HTML/new.html")
header = driver.find_elements_by_xpath("/html/body/table/tbody/tr[1]/th")
row = driver.find_elements_by_xpath("/html/body/table/tbody/tr[2]/td")
head = len(header) # 3
r1 = len(row) # 5
headers = []
rows = []
for h in header:
headers.append(h.text)
for r in row:
rows.append(r.text)
print (headers)
print (rows)
结果:
['Name', 'Month', 'Savings']
['John', 'January', '']
Header 部分 (["Name","Month","Savings"]) 正常工作,但我无法构建 for 循环来分别为所有行创建列表。尝试了几个 diff for 循环,但都变成了嵌套 for 循环。我想做的实际上是稍后编写 excel 文件:
["Name","Month","Savings"]
['John','January','']
['Smith','February','']
['John','March','']
['John','January','']
如果你们能提供建议,我将非常高兴。非常感谢。
要简单地遍历其他 trs 并获取他们所有的 td 文本,您可以执行以下操作。
trs = driver.find_elements_by_xpath("//table//tr")
for tr in trs[1:]:
row=[td.text for td in tr.find_elements_by_tag_name("td")]
print(row)
尝试迭代每一行以分别为所有行创建列表。 HTML table 是;
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<th>Name</th>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>John</td>
<td>January</td>
<td></td>
</tr>
<tr>
<td>Smith</td>
<td>February</td>
<td></td>
</tr>
<tr>
<td>Ken</td>
<td>March</td>
<td></td>
</tr>
<tr>
<td>Dan</td>
<td>April</td>
<td></td>
</tr>
</table>
</body>
</html>
我的 python 代码是:
driver.get("file:///C:/HTML/new.html")
header = driver.find_elements_by_xpath("/html/body/table/tbody/tr[1]/th")
row = driver.find_elements_by_xpath("/html/body/table/tbody/tr[2]/td")
head = len(header) # 3
r1 = len(row) # 5
headers = []
rows = []
for h in header:
headers.append(h.text)
for r in row:
rows.append(r.text)
print (headers)
print (rows)
结果:
['Name', 'Month', 'Savings']
['John', 'January', '']
Header 部分 (["Name","Month","Savings"]) 正常工作,但我无法构建 for 循环来分别为所有行创建列表。尝试了几个 diff for 循环,但都变成了嵌套 for 循环。我想做的实际上是稍后编写 excel 文件:
["Name","Month","Savings"]
['John','January','']
['Smith','February','']
['John','March','']
['John','January','']
如果你们能提供建议,我将非常高兴。非常感谢。
要简单地遍历其他 trs 并获取他们所有的 td 文本,您可以执行以下操作。
trs = driver.find_elements_by_xpath("//table//tr")
for tr in trs[1:]:
row=[td.text for td in tr.find_elements_by_tag_name("td")]
print(row)