Установить условия в инструкции xpath - PullRequest
0 голосов
/ 08 января 2019

Я очищаю веб-сайт с помощью scrapy и хотел бы получить данные только из ссылок, которые выделены серым цветом, что я и сделал, настроив класс css для элементов, выделенных серым цветом. Проблема, с которой я сталкиваюсь, заключается в том, что второй xpath /div[1]/text() выбирает элементы из активных элементов, поэтому, когда мой список возвращается, у меня есть адрес для компаний, которые не активны в моем списке.

Я хотел бы знать, есть ли способ выбрать только родительский div из класса font_grey. Я попытался использовать parent::text(), но это вернуло пустое значение.

<div onclick="" class="col-md-5 border_right maxhelem ">
<h3 class="font_grey">Kost A/S</h3>
501&nbsp;Give St
</div>

response.xpath('//*[@id="main_wrapper"]/main/div/div/div/div[4]/div/div/div[2]/div[2]/div/div/div/div/div/div/h3[@class="font_grey"]/text() |  //*[@id="main_wrapper"]/main/div/div/div/div[4]/div/div/div[2]/div[2]/div/div/div/div/div/div[1]/text()').extract()

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это XPath,

//div[h3/@class = "font_grey"]

выберет все элементы div с дочерним элементом h3, значение атрибута @class которого равно "font_grey".

0 голосов
/ 08 января 2019

если есть способ выбрать только родительский div из класса font_grey

Попробуйте этот xpath //*[@class='font_grey]/..

Объяснение:

//* - любой элемент на любом уровне
[@class='font_grey'] - где атрибут класса равен "font_grey"
/.. - выберите родителя

...