Я пытаюсь выбрать текст "Часть Солнце, Солнце" и "Трава", "Комнатное растение" из HTML ниже.
В <div class="specifics">
есть больше этих "строк", и интересующий меня текст всегда идет после определенных тегов абзаца, содержащих определенный текст, такой как "Light:" и "Type:" ниже.
Редактировать: Чтобы прояснить все "значения" div, меня интересуют только те, которые имеют конкретные "имена". Поэтому я хочу проверить текст абзацев, вложенных в элементы <div class="name">
, и, если это то, что мне интересно, выделите текст внутри последующего элемента <div class="value">
.
<div class="specifics">
<div class="row">
<div class="name">
<p>Light:</p>
</div>
<div class="value">
<p>Part Sun, Sun</p>
</div>
</div>
<div class="row">
<div class="name">
<p>Type:</p>
</div>
<div class="value">
<p>
<a href="https://www.bhg.com/gardening/plant-dictionary/herb/">Herb</a>, <a href="https://www.bhg.com/gardening/plant-dictionary/houseplant/">Houseplant</a>
</p>
</div>
</div>
...more rows...
</div>
Я пробовал это (используя Scrapy):
trait = response.xpath("//div[@class='specifics']")
trait.xpath(".//div[@class='row']/div[@class='name']/p[text()='Light:']/../../div[@class='value']/p/text()[normalize-space()]")
Первая строка в порядке, но вторая возвращается \n \n
Извините за плохое редактирование, ниже приведен пример того, как выглядит элемент абзаца.
Второе редактирование: Есть куча пустых строк, и когда я выбираю просто / p без текста (), я все равно получаю только кучу \ n без текста? Пробовал нормализовать пространство как указано выше.
<p>
Part Sun,
Sun
</p>