Python:如何提取表中列的内容

slw*_*lwr 3 html python parsing

我有这个HTML结构:

<div>
    <table>
       <tbody>
          <tr>
            <td>stuff</td>
          </tr>
          <tr>
            <td>
              <div>The content I want</div> 
           </td>
           </tr>
        </tbody>
      </table>
</div>
Run Code Online (Sandbox Code Playgroud)

如何获取"我想要的内容"并删除所有html标签?

谢谢

Kim*_*ais 8

使用BeautifulSoup,例如

>>> from BeautifulSoup import BeautifulSoup as bs
>>> text = """<div>
...     <table>
...        <tbody>
...           <tr>
...             <td>stuff</td>
...           </tr>
...           <tr>
...             <td>
...               <div>The content I want</div> 
...            </td>
...            </tr>
...         </tbody>
...       </table>
... </div>"""
>>> a = bs(text)
Run Code Online (Sandbox Code Playgroud)

由于所有<tr>标签都有一些内容,而您需要第二行的数据,因此您无法使用a.text,但需要做一些更复杂的事情:

>>> a.table.tbody.findAll("tr")[1].div.text
u'The content I want'
Run Code Online (Sandbox Code Playgroud)

或者,如果<div>表行(<tr>)上只有一个标记,您也可以遍历标记,例如:

>>> a.table.tbody.div.text
u'The content I want'
Run Code Online (Sandbox Code Playgroud)

或者您可以使用lxml模块中的html解析器,如下所示:

>>> from lxml import html
>>> t = html.fromstring(text)
>>> t.xpath("table/tbody/tr[2]/td/div")[0].text
'The content I want'
Run Code Online (Sandbox Code Playgroud)