Scrapy не может вернуть ссылку, потому что занимает 2 строки - PullRequest
0 голосов
/ 03 марта 2019

Первую строку таблицы легко очистить, потому что заголовок "P / E Ratio (TTM)" написан аккуратно в одной строке.Другие строки таблицы, однако, я не могу отсканировать, потому что «P / E High - последние 5 лет».занимает 2 строки, и я понятия не имею, как ссылаться на него.То же самое касается "P / E Low - последние 5 лет."

<tr class="stripe">
        <td>P/E Ratio (TTM)</td>
        <td class="data">11.39</td>
        <td class="data">87.22</td>
        <td class="data">19.22</td>
    </tr>
<tr>
        <td>
           P/E High - Last 5 Yrs.</td>
        <td class="data">34.48</td>
        <td class="data">114.12</td>
        <td class="data">24.22</td>
    </tr>
<tr class="stripe">
        <td>              
          P/E Low - Last 5 Yrs.</td>
        <td class="data">10.54</td>
        <td class="data">12.02</td>
        <td class="data">11.39</td>
    </tr>

Я пытаюсь вернуть числа в этой таблице.То, что у меня пока работает, это:

response.xpath("//td[./preceding-sibling::td[1]='P/E Ratio (TTM)']//text()").extract()
response.xpath("//td[./preceding-sibling::td[2]='P/E Ratio (TTM)']//text()").extract()
response.xpath("//td[./preceding-sibling::td[3]='P/E Ratio (TTM)']//text()").extract()

У меня такое ощущение, что я упускаю что-то очень очевидное здесь.Вот ссылка на сайт: https://www.reuters.com/finance/stocks/financial-highlights/AB

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете использовать xpath, как показано ниже, чтобы получить доступ к <td> в <tr> с текстом типа

P / E High - последние 5 лет.

как уже упоминалось в вопросе

//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[2]
//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[3]
//tr[td[normalize-space()='P/E High - Last 5 Yrs.']]/td[4]

normalize-space() обрезает пробел с обоих концов текста, чтобы вы могли сопоставить его, даже если он разбит на несколько строк

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