在美丽的汤中打印最后一个 <td>

use*_*866 2 python html-table beautifulsoup html-parsing

我必须从一个复杂的 HTML 文档中读取,其中一个表没有 ID,每个表都有未定义数量的 tr 标签。我想在最后一个<tr>标签的 td 中打印文本。我在解析树时找不到任何打印最后一个孩子的东西。

我要打印 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>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

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
Run Code Online (Sandbox Code Playgroud)

jte*_*ace 5

听起来您正在尝试查找最后一个tr元素并打印其中的所有td文本值。首先,要查找最后一个tr,您可以选择所有tr元素,然后使用-1查找最后一个:

>>> last_tr = soup('tr')[-1]
Run Code Online (Sandbox Code Playgroud)

然后,要查找<td><tr>元素中的所有标签:

>>> [td.text for td in last_tr('td')]
[u'4', u'4.1', u'4.2']
Run Code Online (Sandbox Code Playgroud)