【问题标题】:HTML Parsing Table - BeautifulSoupHTML解析表-BeautifulSoup
【发布时间】:2011-09-24 12:26:07
【问题描述】:

我正在尝试使用 BeautifulSoup 解析下面看到的第二个表。我无法识别第二个表格和第一个表格,因为表格属性完全相同。如何访问表中的信息,例如 name = PATHWAY?到目前为止,我尝试访问该表的方法是:

table = soup.find('table', {'name':'PATHWAY'})

虽然我知道该表存在,但我收到“无”的响应。对我来说,这意味着我区分两者的方法不起作用。有什么建议吗?

<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>

【问题讨论】:

  • 您的问题解决了吗?

标签: python html-parsing beautifulsoup


【解决方案1】:

Mu Mind 说得对:找到“a”,然后遍历父项

soup.find(attrs={"name":"PATHWAY"}).findParent('table')

这就是 python 的方式....只有一个 xpath 命令,但是在轴上使用 xpath 操作更复杂,只有它具有某些特定用途(例如 xslt 或 javascript 要求)才值得付出努力

【讨论】:

    【解决方案2】:
    >>> soup.find(attrs={"name":"PATHWAY"})
    <a name="PATHWAY">PATHWAY</a>
    
    【解决方案3】:

    第一:

    table = soup.find('table' {'name':'PATHWAY'}
    

    不是正确的 Python 代码。

    这应该匹配什么?

    这只会匹配。

    要么遍历每个表并在每个表内执行相关检查,要么遍历树的每个节点,直到找到相关节点,然后沿着节点层次结构(通过跟随父节点)直到找到一个表格元素。 recursiveChildGenerator() 可用于遍历所有节点(如在平面列表中)。

    【讨论】:

    • 代码可能不是正确的python,但可以通过BeautifulSoup使用。我将尝试遍历每个表,看看它是如何工作的。
    • 嗯...它少了一个逗号,但你的版本少了一个括号,所以我不会大声抱怨它。
    【解决方案4】:

    可以使用find的函数形式:

    soup.find(lambda tag: (tag.name=='table' and \
        (tag.find('a', attrs={'name': 'PATHWAY'}) is not None)))
    

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 2011-06-15
      • 2014-09-03
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2020-02-06
      相关资源
      最近更新 更多