Scrapy Извлечение текста по заданному шаблону c в классе - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь извлечь информацию на основе указанного шаблона c в коде HTML. В идеале я хотел бы извлечь текст для класса div, который упоминает только «bg-deep-green». Я новичок в регулярных выражениях, поэтому я не был уверен, есть ли способ использовать их или любой другой метод через xpath.

Вот пример HTML:

<div class="flex flex-row w-full mb-lg">
     <div class="flex text-center text-sm text-white rounded-l-full bg-green">&lt; 30</div>
     <div class="flex text-center text-sm text-white bg-green">30 - 78</div>
     <div class="flex text-center text-sm text-white rounded-r-full bg-deep-green">&gt; 78</div></div>

У меня есть xpath для родительского элемента, который очищает все теги.

response.xpath('//*[@class="flex flex-row w-full mb-lg"]//@class').extract()

Кроме того, xpath, который очищает весь текст для тегов.

response.xpath('//*[@class="flex flex-row w-full mb-lg"]//text()').extract()

Наихудший сценарий Я мог бы разобрать его после очистки, я думаю, но было бы неплохо, если бы я мог сделать это до очистки.

Я пытался использовать contains различными способами и с использованием обозначения string в документации. Ниже приведены некоторые из моих попыток, однако, я могу неправильно понять содержание документации.

response.xpath('//*[@class="flex flex-row w-full mb-lg"]/div/[contains("bg-deep-green")]/text()')

response.xpath('//*[@class="flex flex-row w-full mb-lg"]/div/[contains(., "bg-deep-green")]')

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Ваш синтаксис для выражения XPath неправильный, он должен выглядеть следующим образом:

response.xpath("//div[@class='flex flex-row w-full mb-lg']/div[contains(@class , 'bg-deep-green")]/text()')

ИЛИ Вы можете просто использовать:

response.xpath("//div[contains(@class , 'bg-deep-green')]/text()")
0 голосов
/ 22 января 2020

Этого должно быть достаточно

response.xpath("//div[contains(@class,'bg-deep-green')]/text()").extract()[0].strip()

Вывод

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