Scrapy:如何选择跨行

时间:2018-11-08 06:56:09

标签: scrapy

这是我的代码:

  <tr>
      <td height="34" class="normal">4893</td>
      <td class="normal">Public Utilities Commission </td>
      <td class="normal">Investigation to Examine </td>. 
   </tr>
   <tr>
      <td height="34" rowspan="2" class="normal"><a 
             href="docket/4892page.html">4892</a></td>
      <td class="normal"><p>RI Distribution Genration 
            Boardd</p></td>
      <td class="normal">2019 Renewable Energy </td>
    </tr>
    <tr>
      <td class="normal">The Narragansett Ele</td>
      <td class="normal">2018 Renewable Energy </td>
    </tr>
    <tr>
      <td height="34" class="normal"><a 
           href="docket/4891page.html">4891</a></td>
      <td class="normal">Kearsarge Uxbridge, LLC </td>
      <td class="normal">Renewable Energy</td>
    </tr>

在第二行<tr>中,rowspan =“ 2”,我想将第一行<td>的内容(即4892)应用于下一个<tr>,其中有两个<td>。我已经尝试了以下方法,但是不起作用:

        item['id'] = row.xpath('.//tr//td[1]//text()').extract()

        if not item['id']:
            item['id'] = row.xpath('.//[preceding- 
                                      sibling::tr//td[1]//text()').extract()

1 个答案:

答案 0 :(得分:2)

因此,您实际上不是在“选择行跨度”,而是在“通过行跨度选择”。

您可以尝试几种方法。

rowspan存在时选择它:

# CSS
row.css('tr td[rowspan]::text')
# XPath
row.xpath('//tr/td[@rowspan]/text()')

rowspan具有特定值(此处为“ 2”)时选择它:

# CSS
row.css('tr td[rowspan=2]::text')
# XPath
row.xpath('//tr/td[@rowspan="2"]/text()')

另请参阅: