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)
听起来您正在尝试查找最后一个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)
| 归档时间: |
|
| 查看次数: |
6223 次 |
| 最近记录: |