在Selenium中,如何在标记中找到第二个元素?

时间:2017-07-11 02:35:32

标签: python html selenium

我想在 tr 标记中找到第二个 td 元素,该标记有4个 td 标记。 这是我想从那里获得的 HTML 代码。

<tr>
    <td width="10%" class="cell">&nsp;</td>
    <td class="cell" width="40%">Sports</td>
    <td class="cell rgt" width="40%">-29.94</td>
    <td width="10%" class="cell">&nsp;</td>
</tr>
<tr>
    <td class="cell">&nsp;</td>
    <td class="cell">Casino</td>
    <td class="cell rgt">464.22</td>
    <td class="cell">&nsp;</td>
</tr>
<tr>
    <td class="cell">&nsp;</td>
    <td class="cell">Poker</td>
    <td class="cell rgt">14.29</td>
    <td class="cell">&nsp;</td>
</tr>
<tr>
    <td class="cell">&nsp;</td>
    <td class="cell">Games / Bingo</td>
    <td class="cell rgt">145.17</td>
    <td class="cell">&nsp;</td>
</tr>
<tr>
    <td class="cell">&nsp;</td>
    <td class="cell b">Total</td>
    <td class="cell b rgt">593.75</td>
    <td class="cell b">&nsp;</td>
</tr>
<tr class="c3">
    <td class="cell">&nsp;</td>
    <td class="cell b">Withdrawals to date</td>
    <td class="cell b rgt">0.00</td>
    <td class="cell">&nsp;</td>
</tr>
<tr class="c3">
    <td class="cell">&nsp;</td>
    <td class="cell b">Balance</td>
    <td class="cell b rgt">593.75</td>
    <td class="cell">&nsp;</td>
</tr>

我想获得像

这样的数据
Sports, -29.94
Casino, 434.22
Poker, 14.29
Games / Bingo, 145.17
Total, 593.75
Withdrawals to date, 0.00
Balance, 593.75

这是我为获取数据而制作的代码段。

bet365 = webdriver.Chrome()
bet365.get("https://www.abcde.com")
...
for incomes in bet365.find_elements_by_class_name("rgt"):
    if incomes.text != "Close Window":
        print(incomes.text)
        Earning = incomes.find_element_by_xpath('..').find_element_by_xpath("//td[2]")
        print(Earning.text)

正如您所看到的,我可以从 HTML 代码中获取所有数字,例如

-29.94
464.22
14.29
145.17
593.75
0.00
593.75

但我无法获得体育,赌场等等。

如何自动获取它们。

2 个答案:

答案 0 :(得分:3)

你犯了一个小错误。

替换

Earning = incomes.find_element_by_xpath('..').find_element_by_xpath("//td[2]")

Earning = incomes.find_element_by_xpath('..').find_element_by_xpath(".//td[2]")

应该有一个“。”在“td”前面,以便驱动程序不会在整个HTML页面中搜索元素。应该从当前元素中搜索该元素。

答案 1 :(得分:1)

因为你想要得到的td总是出现在你得到的那个之前,你可以尝试像这样得到前面的兄弟:

incomes.find_element_by_xpath('..').find_element_by_xpath("//td[2]/preceding-sibling::td")
相关问题