HTML 解析表 - BeautifulSoup

1 投票
3 回答
1315 浏览
提问于 2025-04-16 20:28

我正在尝试用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的要求)才值得去做。

撰写回答