XPath: сопоставление текста между двумя похожими тегами - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь очистить веб-сайт с беспорядочной структурой, текст, который мне требуется, лежит между первыми 5 последовательными тегами br (не больше и не меньше, ровно 5) и следующими 2 последовательными тегами 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 Ответ

0 голосов
/ 22 октября 2018

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

> text = sel.xpath('//text()').extract()
['\n"Some text"\n', '\n"Some text"\n', ...]
> values = ''.join(text).split('\n\n\n\n\n')[1]
'\n"Required text"\n\n"Required text"\n\n"Required text"\n\n\n'
> values.strip().split('\n\n')
['"Required text"', '"Required text"', '"Required text"']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...