XPath: сопоставление текста между двумя аналогичными тегами

Я пытаюсь очистить веб-сайт с беспорядочной структурой, текст, который мне нужен, лежит между первыми 5 последовательными метками br (не больше и не меньше, ровно 5) и следующими двумя последовательными метками br.
Это выглядит так:

<p class="A"> "Some text" <br> "Some text" <br> <br> "Some text" <br> <br> <br> <br> <br> "Required text" <br> "Required text" <br> "Required text" <br> <br> </p> 

Всего 1 ответ


Scrapy преобразует теги в символы новой строки, поэтому вы можете просто извлечь весь текст и разделить его на 5 символов новой строки:

> text = sel.xpath('//text()').extract()
['
"Some text"
', '
"Some text"
', ...]
> values = ''.join(text).split('




')[1]
'
"Required text"

"Required text"

"Required text"


'
> values.strip().split('

')
['"Required text"', '"Required text"', '"Required text"']

Есть идеи?

10000