问题描述
我有一个表格(
)的值都来自它的主体(
).我想打印出来的值是在 <span>
中的
检查 html,我看到了值,例如名称"在第 1 行 (tr[1])、第 2 列 (td[2]) 中:
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG GAT4PNUNG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG"><div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;"><span class="linkhover" title="Name" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">名称</span>
</td>
我想遍历表格的每一行并打印出第 2 列 td[2] 中的值
我正在使用 Python 和 Selenium Webdriver
表格第 1 行第 2 列的完整 Xpath 为:
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody/tr[1]/td[2]/格/跨度
我在想是否可以从表格开始,xpath如下:
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody
然后我可以使用 for 循环并为 tr 和 td 使用索引例如,对于 row1 使用 tr[i],对于 col2 使用 td[2].
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody/tr[i]/td[2]/div/span
如何遍历该表并打印出始终位于该表的第 2 列中的 Span 类标记的值?
我试图将表的开头放入一个变量中,然后我可以用它来循环遍历行和列.我需要一些帮助.
table = self.driver.find_element(By.XPATH, 'html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody')
这是完整的 HTML:
<colgroup>
<tr class="GAT4PNUFG GAT4PNUMG" __gwt_subrow="0" __gwt_row="0"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG GAT4PNUNG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG"><div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;"><span class="linkhover" title="Name" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">名称</span></td><td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUBH GAT4PNUNG"></tr><tr class="GAT4PNUEH" __gwt_subrow="0" __gwt_row="1"><td class="GAT4PNUEG GAT4PNUFH GAT4PNUHG"><td class="GAT4PNUEG GAT4PNUFH"><div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;"><span class="linkhover" title="Address" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">地址</span>
</td><td class="GAT4PNUEG GAT4PNUFH"><td class="GAT4PNUEG GAT4PNUFH"><td class="GAT4PNUEG GAT4PNUFH"><td class="GAT4PNUEG GAT4PNUFH GAT4PNUBH"></tr><tr class="GAT4PNUFG" __gwt_subrow="0" __gwt_row="2"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG"><td class="GAT4PNUEG GAT4PNUGG"><div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;"><span class="linkhover" title="DOB" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">DOB</span>
</td><td class="GAT4PNUEG GAT4PNUGG"><td class="GAT4PNUEG GAT4PNUGG"><td class="GAT4PNUEG GAT4PNUGG"><td class="GAT4PNUEG GAT4PNUGG GAT4PNUBH"></tr><tr class="GAT4PNUEH" __gwt_subrow="0" __gwt_row="3">---<tr class="GAT4PNUFG" __gwt_subrow="0" __gwt_row="4">---</tbody>
开发人员已将 ID 放入表中.我现在可以工作了.它正在打印第 2 列中的所有单元格值.代码是:
table_id = self.driver.find_element(By.ID, 'data_configuration_feeds_ct_fields_body0')rows = table_id.find_elements(By.TAG_NAME, "tr") # 获取表中的所有行对于行中的行:# 获取列(所有第2列)col = row.find_elements(By.TAG_NAME, "td")[1] #注意:索引从0开始,1是col 2print col.text #从元素打印文本
I have a table (<table>
) with values in each row (<tr>
) from its body (<tbody>
).
The value I would lile to print out is in the <span>
inside a <div>
tag.
Inspecting the html, I see the value e.g. "Name" is in row 1 (tr[1]), column 2 (td[2]):
<tr class="GAT4PNUFG GAT4PNUMG" __gwt_subrow="0" __gwt_row="0">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG GAT4PNUNG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG">
<div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;">
<span class="linkhover" title="Name" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">Name</span>
</div>
</td>
I would like to loop through the table each row and print out the value in columns 2, td[2]
I am using Python with Selenium Webdriver
The full Xpath to the table row 1, column 2 is:
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody/tr[1]/td[2]/div/span
I was thinking if i can start from the table, xpath as follows:
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody
I can then use a for loop and use an index for the tr and tde.g for row1 use tr[i], for col2 use td[2].
html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody/tr[i]/td[2]/div/span
How can i loop through this table and print out the value of the Span class tag which is always in column 2 of the table?
I tried to get the start of the table into a variable and then I could maybe use this to loop through the rows and columns.I need some help please.
table = self.driver.find_element(By.XPATH, 'html/body/div[2]/div[2]/div/div[4]/div/div[2]/div/div[3]/div/div[5]/div/div[3]/div/div[4]/div/div[2]/div/div[4]/div/div[3]/div/div[2]/div/div/table/tbody')
Here's the full HTML:
<table cellspacing="0" style="table-layout: fixed; width: 100%;">
<colgroup>
<tbody>
<tr class="GAT4PNUFG GAT4PNUMG" __gwt_subrow="0" __gwt_row="0">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG GAT4PNUNG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG">
<div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;">
<span class="linkhover" title="Name" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">Name</span>
</div>
</td>
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUNG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUBH GAT4PNUNG">
</tr>
<tr class="GAT4PNUEH" __gwt_subrow="0" __gwt_row="1">
<td class="GAT4PNUEG GAT4PNUFH GAT4PNUHG">
<td class="GAT4PNUEG GAT4PNUFH">
<div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;">
<span class="linkhover" title="Address" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">Address</span>
</div>
</td>
<td class="GAT4PNUEG GAT4PNUFH">
<td class="GAT4PNUEG GAT4PNUFH">
<td class="GAT4PNUEG GAT4PNUFH">
<td class="GAT4PNUEG GAT4PNUFH GAT4PNUBH">
</tr>
<tr class="GAT4PNUFG" __gwt_subrow="0" __gwt_row="2">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUHG">
<td class="GAT4PNUEG GAT4PNUGG">
<div __gwt_cell="cell-gwt-uid-324" style="outline-style:none;">
<span class="linkhover" title="DOB" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;display:block;color:#00A;cursor:pointer;">DOB</span>
</div>
</td>
<td class="GAT4PNUEG GAT4PNUGG">
<td class="GAT4PNUEG GAT4PNUGG">
<td class="GAT4PNUEG GAT4PNUGG">
<td class="GAT4PNUEG GAT4PNUGG GAT4PNUBH">
</tr>
<tr class="GAT4PNUEH" __gwt_subrow="0" __gwt_row="3">
---
<tr class="GAT4PNUFG" __gwt_subrow="0" __gwt_row="4">
---
</tbody>
</table>
The developer has put an ID into the table. I have it working now. It is printing all the cell values from column 2. The code is:
table_id = self.driver.find_element(By.ID, 'data_configuration_feeds_ct_fields_body0')
rows = table_id.find_elements(By.TAG_NAME, "tr") # get all of the rows in the table
for row in rows:
# Get the columns (all the column 2)
col = row.find_elements(By.TAG_NAME, "td")[1] #note: index start from 0, 1 is col 2
print col.text #prints text from the element
这篇关于使用 Python Selenium 遍历表行并打印列文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!