我有一个类似HTML的网页:
<table class="table_type1" id="sailing">
<tbody>
<tr>
<td class="multi_row"></td>
<td class="multi_row"></td>
<td class="multi_row">1</td>
<td class="multi_row"></td>
</tr>
<tr>
<td class="multi_row"></td>
<td class="multi_row"></td>
<td class="multi_row">1</td>
<td class="multi_row"></td>
</tr>
</tbody>
</table>
和tr标签是动态的,所以我不知道它们中有多少,我需要列表中所有tr标签的所有td [3]来进行切片。如果使用{ {1}}具有迭代工具。
答案 0 :(得分:1)
尝试以下代码:
tdElements = driver.find_elements_by_xpath("//table[@id="sailing "]/tbody//td")
编辑:对于第三个元素
tdElements = driver.find_elements_by_xpath("//table[@id="sailing "]/tbody/tr/td[3]")
答案 1 :(得分:1)
尝试
cells = driver.find_elements_by_xpath("//table[@id='sailing']//tr/td[3]")
获取每行的第三个单元格
修改
要进行迭代,请使用for循环:
print ([i.text for i in cells])
答案 2 :(得分:1)
要获取每行的第三个时标,您可以尝试使用xpath
driver.find_elements_by_xpath('//table[@id="sailing"]/tbody//td[3]')
或者您可以尝试使用css选择器之类的
driver.find_elements_by_css_selector('table#sailing td:nth-child(3)')
在返回列表时,您可以为每个列表进行迭代,
elements=driver.find_elements_by_xpath('//table[@id="sailing"]/tbody//td[3]')
for element in elements:
print(element.text)
答案 3 :(得分:1)
要打印文字,例如在第三个<td>
中,每个 1 都可以使用get_attribute()
方法或text
属性,还可以使用以下任一解决方案:
使用 CssSelector 和get_attribute()
:
print(driver.find_elements_by_css_selector("table.table_type1#sailing tr td:nth-child(3)").get_attribute("innerHTML"))
使用 CssSelector 和text
属性:
print(driver.find_elements_by_css_selector("table.table_type1#sailing tr td:nth-child(3)").text)
使用 XPath 和get_attribute()
:
print(driver.find_elements_by_xpath('//table[@class='table_type1' and @id="sailing"]//tr//following::td[3]').get_attribute("innerHTML"))
使用 XPath 和text
属性:
print(driver.find_elements_by_xpath('//table[@class='table_type1' and @id="sailing"]//tr//following::td[3]').text)