如何使用XPath选择两个特定表行之间的元素

时间:2017-11-24 14:10:59

标签: python html xml xpath web-scraping

我想抓取具有以下HTML结构的网站的一部分:

<table>
  <tbody>
    <tr>
      <td colspan="2">
         <h4 class="h4-lead text-left m-b-0">Basic Info</h4>
      </td>
    </tr>
    <tr>
      <td><strong>Condition</strong></td>
      <td>1 (mint)</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>With box</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>With papers</td>
    </tr>
    <tr>
      <td><strong>Gender</strong></td>
      <td>Unisex</td>
    </tr>
  </tbody>
</table>

我希望在条件性别之间的td元素中获取每个tr的第二个类型的文本行。

基于以上所述我想要的输出是:

['1 (mint)', 'With box', 'With papers']

我尝试了几种方法,但我甚至都不接近解决方案。

请注意,条件行的数量是任意的,不一定是3,如本例所示。它可以是0,1,2 ...... n。

1 个答案:

答案 0 :(得分:1)

这个XPath,

//td[2][    preceding::td[.='Condition']
        and following::td[.='Gender']
       ]/text()

将选择tdCondition之间所有第二个Gender元素的文本节点,

1 (mint)
With box
With papers

按要求。