Xpath, Scrapy, печать содержимого из класса div с использованием идентификатора? - PullRequest
1 голос
/ 09 июля 2020

Пример кода ниже:

<div class="accordion-content" data-tab-content="" role="tabpanel" aria-labelledby="fmh1ij-accordion-label" aria-hidden="true" id="fmh1ij-accordion">

Number of Seats:    Seventeen (17) certified seats for take-off &amp; landing - including jump seat
<br>

Forward Cabin:  Four (4) place executive club seats with pull-out tables
<br>
Mid Cabin:  Four (4) place conference group opposite three (3) place 16G divan
<br>
Aft Cabin:  Two (2) place executive club seats opposite three (3) place 16G divan
<br>
Lavatory Location(s):   Forward crew lavatory and fully enclosed aft lavatory
<br>

Мне нужно извлечь содержимое ниже 'div class = accordion-content'. Есть ли способ сделать это с помощью идентификатора? 'id = "fmh1ij-accordion"?

Что мне нужно извлечь:

"Количество мест: семнадцать (17), и т.д. c. Передняя каюта: четыре (4) и т.д. c ... "

Я попробовал приведенный ниже код, но он не сработал.

response.xpath("//div[contains(@id,'fmh1ij-accordion')]//text()").extract()

1 Ответ

1 голос
/ 09 июля 2020

Поскольку мы имеем дело с тегом id, нет необходимости использовать contains, вы должны искать в XPath элемент, который соответствует тегу id, который вы ищете:

response.xpath("//div[@id='fmh1ij-accordion']//text()").extract()

Попробуйте фрагмент выше, и сообщите мне, сработало ли оно.

EDIT

После проверки исходного URL-адреса кажется, что тег id создается динамически. В этом случае я бы предложил выбрать элемент по классу или с использованием другого XPath. Два предложения для вас:

response.xpath('//a[contains(text(), "Interior")]/following-sibling::div//text()').extract()


response.xpath('//li[contains(@class,"accordion-item") and contains(a/text(), "Interior")]/div//text()').extract()
...