我必须从一个复杂的 HTML 文档中读取,其中一个表没有 ID,并且每个表都有未定义数量的 tr 标签。我想在最后一个 <tr>
的 td 中打印文本标签。在解析树时,我找不到任何打印最后一个 child 的东西。
我要打印 4,4.1,4.2
<table border=0 bgcolor=#000000 cellspacing=1 width="100%"
<tr bgcolor="#FFFFFF">
<td>1</td>
<td>1.1</td>
<td>1.2</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>2</td>
<td>2.1</td>
<td>2.2</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>3</td>
<td>3.1</td>
<td>3.2</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>4</td>
<td>4.1</td>
<td>4.2</td>
</tr>
这是我目前所拥有的:
from bs4 import BeautifulSoup
import urllib
sock = urllib.urlopen("someurl")
htmlread = sock.read()
soup = BeautifulSoup(htmlread)
tabledata = soup.find("table", {"border":"0", "bgcolor":"#000000", "cellspacing":"1", "width":"100%"})
other = tabledata.findAll("tr", {"bgcolor":"#FFFFFF"})
print other
最佳答案
听起来您正在尝试找到最后一个 tr
元素并打印所有 td
其中的文本值。首先,找到最后一个tr
, 您可以选择所有 tr
元素,然后使用 -1
找到最后一个:
>>> last_tr = soup('tr')[-1]
然后,找到所有<td>
里面的标签 <tr>
元素:
>>> [td.text for td in last_tr('td')]
[u'4', u'4.1', u'4.2']
关于python - 在 BeautifulSoup 中打印最后一个 <td>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702857/