我正在寻找this page的“描述”部分。它包含多个<p>
标记。我可以使用此xpath
:
response.xpath('//div[@itemprop="description"]/p/text()').extract()
但结果是列表的形式,这不符合我的期望:
['\r\n\tLancée en 2016, la start-up ',
'est spécialisée dans le développement de ',
" permettant l'",
" et l'amélioration de sa prise en charge.",
'\r\n\t',
'\r\n\tLa jeune pousse développe ',
', un dossier médical numérique universel regroupant toutes les ',
' (antécédents, allergies, contre-indications, ordonnances, imagerie, biologie...).',
'\r\n\t\xa0',
'\r\n\tLes solutions développées par InnovSanté permettent de faciliter le parcours de soins, de connecter les différents intervenants de la santé et de générer des économies de santé publique.\xa0']
我想使用以下内容添加normalize-space
的functionnality来检索'干净数据':
response.xpath('normalize-space(//div[@itemprop="description"]/p/text())').extract()
但是,结果仅限于上一个列表的第一个<p>
标记:
['Lancée en 2016, la start-up']
答案 0 :(得分:0)
如果您想在strong
标记内获取文字,则需要将xpath表达式修改为//div[@itemprop="description"]/p//text()
。
/
匹配xpath中的直接子项,而//
匹配任何后代。
有关进行空间规范化的方法,请查看gangabass的答案。
在scrapy中处理此问题的另一种方法是使用具有适当输入和/或输出处理器的item loader。
例如,使用MapCompose(str.strip)
作为输入处理器并使用Join()
作为输出处理器会产生以下结果:
{'description': 'Lancée en 2016, la start-up InnovSanté est spécialisée dans '
"le développement de solutions de e-santé permettant l' "
'optimisation du parcours de soins du patient et '
"l'amélioration de sa prise en charge. La jeune pousse "
'développe Passeport Vital , un dossier médical numérique '
'universel regroupant toutes les informations relatives au '
'malade (antécédents, allergies, contre-indications, '
'ordonnances, imagerie, biologie...). Les solutions '
'développées par InnovSanté permettent de faciliter le '
'parcours de soins, de connecter les différents intervenants '
'de la santé et de générer des économies de santé publique.'}