HTML 解析表 - BeautifulSoup
我正在尝试用BeautifulSoup来解析下面的第二个表格。因为这两个表格的属性完全相同,所以我很难区分哪个是第二个表格。我该如何获取表格中的信息,比如名字是PATHWAY?我目前用来尝试访问这个表格的代码是:
table = soup.find('table', {'name':'PATHWAY'})
但是我得到的结果是“None”,虽然我知道这个表格是存在的。这对我来说意味着我区分这两个表格的方法不奏效。有什么建议吗?
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#DCDCDC">
<tr><td>
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td class=ue><a name="REACTION TYPE">REACTION TYPE</td><td class=ue>ORGANISM</td><td class=ue>COMMENTARY</td><td class=ue>LITERATURE</td></tr>
<tr class=tr1>
<td class=g>condensation</td><td class=no>-</td><td class=no>-</td><td class=no>-</td></tr>
</table>
</td></tr></table>
<br>
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#DCDCDC">
<tr><td>
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td class=ue><a name="PATHWAY">PATHWAY</td><td class=ue>KEGG Link</td><td class=ue>MetaCyc Link</td><td class=ue></td></tr>
<table>
3 个回答
0
你可以使用 find
的函数形式:
soup.find(lambda tag: (tag.name=='table' and \
(tag.find('a', attrs={'name': 'PATHWAY'}) is not None)))
1
>>> soup.find(attrs={"name":"PATHWAY"})
<a name="PATHWAY">PATHWAY</a>
当然可以!请提供你想要翻译的StackOverflow内容,我会帮你把它变得更简单易懂。
1
Mu Mind说得对:先找到“a”,然后再往上找它的父级。
soup.find(attrs={"name":"PATHWAY"}).findParent('table')
这就是Python的做法……虽然有一个简单的xpath命令,但在轴上使用xpath会更复杂,只有在有特定需求时(比如xslt或javascript的要求)才值得去做。