Используя скрап и данный HTML-код
<div class="parts">
<b>Part1 :</b>
<a href='/part1.htm'>name 1</a>
<br>
<b> Part2 : </b>
<a href='/part21.htm'>name 21</a>,
<a href='/part22.htm'>name 22</a>,
<a href='/part23.htm'>name 23</a>
<br>
<b> Part3 : </b>
<a href='/parts31.htm'>name 31</a>,
<a href='/part32.htm'>name 32</a>
<br>
</div>
Я хотел бы извлечь каждую серию имен после каждого <b>
раздела.
Для первого (где есть только одно имя) это работает с этим
response.xpath('//div[@class="parts"]/b[contains(text(),"Part1")]/following::a/text()').extract_first()
в результате 'имя 1'
Для второго я ожидал, что следующее даст мне список с «именем 21», «именем 22» и «именем 23», то есть остановкой перед следующим тегом b, но возвращенный список также содержит «имя 31» и 'имя 32'
response.xpath('//div[@class="parts"]/b[contains(text(),"Part2")]/following::a/text()')
Как я могу ограничить список только тем, что находится после тега b 'Part2' и перед тегом b 'Part3'?