【问题标题】:BeautifulSoup4/CSS selector how to select theBeautifulSoup4/CSS 选择器如何选择
【发布时间】:2015-11-07 00:47:48
【问题描述】:
<div class="myDivClass">
    <table class="myTableClass">
       <tr>
           <td>
               stuff-1A
               <table class="myTableClass">
                   <tr>
                       <td>stuff-1B</td>
                   </tr>
               </table>
           </td>
       </tr>
       <tr>
           <td>
               stuff-2A
               <table class="myTableClass">
                   <tr>
                       <td>stuff-2B</td>
                   </tr>
               </table>
           </td>
       </tr>
       <tr>
           <td>
               stuff-3A
               <table class="myTableClass">
                   <tr>
                       <td>stuff-3B</td>
                   </tr>
               </table>
           </td>
       </tr>
    </table>
</div>

给定一个看起来像这样的布局,使用beautifulSoup4你怎么能只从主外部表(包含同一类的子表)中选择td标签?

我正在尝试使用 .select() 方法。

到现在为止

soup.select("div.myDivClass > table.myTableClass")

返回主外部表。但我需要其中的 td 标签。

我试过了

soup.select("div.myDivClass > table.myTableClass tr td")

但这会返回所有的 td 标签


编辑:有人要求预期的输出

我不确定 BeautifulSoups 究竟如何返回 .select() 方法, 但是像这样的

['<td>stuff-1a<table class="myTableClass"><tr><td>stuff-1B</td></tr></table></td>',

'<td>stuff-2a<table class="myTableClass"><tr><td>stuff-2B</td></tr></table></td>',

'<td>stuff-3a<table class="myTableClass"><tr><td>stuff-3B</td></tr></table></td>']

这是一个字符串数组,字符串是只有主外表的td标签及其在html中的内容

【问题讨论】:

  • 你能显示预期的输出吗?
  • 刚刚编辑了帖子以添加预期的输出

标签: python css-selectors beautifulsoup


【解决方案1】:

您可以使用&gt; tr &gt; td 代替tr td 来完成此任务。使用前者,您只会得到 trtd 元素,它们是您已经设法选择的外部表的直接子元素:

div.myDivClass > table.myTableClass > tr > td

供参考:MDN: Child selectors

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-27
    • 2015-10-20
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多