Как извлечь только один элемент в тег с помощью скрапа?
Я пытаюсь извлечь текст из тега страницы <dd></dd>
с помощью этой команды в оболочке Srapy:
[w.strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd/text()').extract()]
Тег dd выглядит так:
<dd> Edelstahl <br>gebürstet (silberfarben) </dd>
скрап возвращается:
'Edelstahl', 'gebürstet (silberfarben)', more dd elements...
Теперь важно, чтобы я получил только первый элемент "Edelstahl" или оба скомпонованных "Edelstahl gebürstet (silberfarben)", но ни в коем случае не два элемента из одного тега dd. Как этого достичь?
2 ответа
Решение
Вы можете использовать:
[w.xpath('string()').extract_first().strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd')]
Так как у вас есть теги в вашем dd
лучше использовать что-то вроде:
from w3lib.html import remove_tags
print [remove_tags(w).strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd').extract()]
Это даст вам четкий текст для каждого dd
элемент.