Попытка перебрать каждую строку, чтобы создать список для всех строк отдельно. HTML таблица есть;

<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>$90</td>
  </tr>
  <tr>
    <td>Smith</td>
    <td>February</td>
    <td>$80</td>
  </tr>
   <tr>
    <td>Ken</td>
    <td>March</td>
    <td>$70</td>
  </tr>
   <tr>
    <td>Dan</td>
    <td>April</td>
    <td>$60</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', '$90']

Заголовочная часть ([«Имя», «Месяц», «Экономия»]) работает, как и должно быть, но я не смог создать цикл for для создания списка для всех строк отдельно. Пробовал несколько циклов diff for, но оказалось, что все они являются вложенными циклами for. На самом деле я хочу сделать следующее, чтобы позже написать файл Excel:

["Name","Month","Savings"]
['John','January','$90']
['Smith','February','$80']
['John','March','$70']
['John','January','$60']

Я был бы очень рад, если бы вы, ребята, дали совет. Спасибо заранее.

1
meto 1 Мар 2021 в 01:50

1 ответ

Лучший ответ

Чтобы просто перебрать другие td и получить весь их 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)
    
1
Arundeep Chohan 1 Мар 2021 в 18:04