Как извлечь текст, который лежит после тега <strong>в элементе - PullRequest
0 голосов
/ 06 ноября 2018

Попытка извлечь текст из элемента, который выглядит следующим образом:

<div><strong>"Beginning_of_text"</strong>"Rest_of_text"</div>

Когда я пытаюсь извлечь "Rest_of_text", используя оболочку Scrapy с

response.css("div::text").extraxt()

Это мне ничего не дает. Нужно ли использовать какую-то специальную команду, чтобы добраться до текста, который находится после тега <strong> внутри элемента?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Только для "Rest_of_text" вы можете использовать response.xpath('//div/strong/following-sibling::text()').get()

0 голосов
/ 06 ноября 2018

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

['"Rest_of_text"']

Проблема может возникнуть, если перед тегом strong есть пробел, например ::

<div>   <strong>"Beginning_of_text"</strong>"Rest_of_text"</div>

В этом случае, если вы выполните ту же команду, вы получите следующее:

['   ', '"Rest_of_text"']

Но если после тега strong ничего нет, вы получите это:

['   ']

Лучший способ справиться со всеми известными мне делами - это сделать следующее:

>>> full_text = ''.join(response.xpath('//div//text()').extract())
>>> before_strong, after_strong = full_text.split(response.css('strong::text').extract_first())

Таким образом, в предоставленном вами тексте before_strong будет равен '', а after_strong будет равен '"Rest_of_text"', что, по-видимому, является тем, что вы хотите получить.

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