python - 在 BeautifulSoup 中打印最后一个 <td>

标签 python beautifulsoup html-table html-parsing

我必须从一个复杂的 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/

相关文章:

python - 将所有查询结果返回至 Alexa Skill

Python 编码问题 : degree sign and others

python - 使用 BeautifulSoup 抓取 <span> 标签文本没有文本属性

jQuery 获取表中单击的 tr 的第二个到第十个 td 的值。我已经有了第一个

html - 使 ul 列表项的行为与其附近的表的行为相同

python - 过滤 Flask Marshmallow 中的嵌套字段

python - 错误 : Service 'dash' failed to build: COPY failed: stat/var/lib/docker/tmp/docker-builder134733065/app. py:Windows 10 中没有此类文件或目录

python - 我想从 spacy 中的文本中提取文本值

python - 在 BeautifulSoup 中提取多个 Span 标签内的内容

html - 一种将 TD 置于 TR 中心的方法?