Selenium table data

HTML

<table>
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
<tr><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>
<tr><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr>
<tr><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td></tr>
</table>

讀取儲存格

  • 以下指令都可以取得儲存格1
  • browser.find_elements_by_xpath("/html/body/table/tbody/tr[1]/td[1]")[0].text
  • browser.find_elements_by_xpath("/html/body/table/tbody/tr[1]/td")[0].text
  • browser.find_elements_by_xpath("//table[1]/tbody/tr[1]/td")[0].text
  • browser.find_elements_by_xpath("//table/tbody/tr[1]/td")[0].text
  • browser.find_elements_by_xpath("//tbody/tr[1]/td")[0].text
  • browser.find_elements_by_xpath("//tr[1]/td")[0].text

Traversal

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Firefox()
browser.get('file:///home/test/a.htm')
table = browser.find_elements(By.TAG_NAME, "table")
rows = table[0].find_elements(By.TAG_NAME, "tr")
for i,row in enumerate(rows):
  cols = row.find_elements(By.TAG_NAME, "td")
  for j,col in enumerate(cols):
    print("table[{}][{}]={}".format(i+1,j+1,col.text))

Traversal

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Firefox()
browser.get('file:///home/test/a.htm')
cells = []
table = browser.find_elements(By.TAG_NAME, "table")
rows = table[0].find_elements(By.TAG_NAME, "tr")
for row in rows:
  cols = row.find_elements(By.TAG_NAME, "td")
  cells.append(cols)
for i in range(len(rows)):
  for j in range(len(cols)):
    print("table[{}][{}]={}".format(i+1,j+1,cells[i][j].text))

Output

$ python3 test.py
table[1][1]=1
table[1][2]=2
table[1][3]=3
table[1][4]=4
table[1][5]=5
table[2][1]=6
table[2][2]=7
table[2][3]=8
table[2][4]=9
table[2][5]=10
table[3][1]=11
table[3][2]=12
table[3][3]=13
table[3][4]=14
table[3][5]=15
table[4][1]=16
table[4][2]=17
table[4][3]=18
table[4][4]=19
table[4][5]=20

Reference

留言