Scrapy: как выбрать размер строки - PullRequest
0 голосов
/ 08 ноября 2018

Вот мой код:

  <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", я хочу применить содержимое 1-го <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 голосов
/ 08 ноября 2018

Таким образом, вместо "select rowspan" вы на самом деле ищете "select by rowspan".

Есть несколько подходов, которые вы можете попробовать.

Выберите его, если существует 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()')

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...