Как извлечь только один элемент в тег с помощью скрапа? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь извлечь текст из тега страницы <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>

scrapy возвращает:

'Edelstahl', 'gebürstet (silberfarben)', more dd elements...

Теперь важно, чтобы я получил либо только первый элемент "Edelstahl", либо оба скомпонованных "Edelstahl gebürstet (silberfarben)", но в любом случае не два элемента из одного тега dd.Как этого достичь?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы можете использовать:

[w.xpath('string()').extract_first().strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd')]
0 голосов
/ 05 декабря 2018

Поскольку у вас есть теги в 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 элемента.

...