如何使用 scrapy 为每个标签只提取一个元素?
How to extract only one element per tag with scrapy?
我正在尝试使用 srapy shell:
中的此命令从页面标签 <dd></dd>
中提取文本
[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 returns:
'Edelstahl', 'gebürstet (silberfarben)', more dd elements...
现在,重要的是我要么只得到第一个元素 "Edelstahl",要么同时得到两个元素 "Edelstahl gebürstet (silberfarben)",但在任何情况下都不能从一个 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
元素的明文。
您可以使用:
[w.xpath('string()').extract_first().strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd')]
我正在尝试使用 srapy shell:
中的此命令从页面标签<dd></dd>
中提取文本
[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 returns:
'Edelstahl', 'gebürstet (silberfarben)', more dd elements...
现在,重要的是我要么只得到第一个元素 "Edelstahl",要么同时得到两个元素 "Edelstahl gebürstet (silberfarben)",但在任何情况下都不能从一个 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
元素的明文。
您可以使用:
[w.xpath('string()').extract_first().strip() for w in response.xpath('//ul[@class="attribute-list"]/li/dl/dd')]