我想在 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
但我无法获得体育,赌场等等。
如何自动获取它们。
答案 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")