xpath string()从渲染中排除特定节点

问题描述 投票:1回答:2

我使用scrapy和xpath尝试在DOM中查找特定节点,并尝试将该部分呈现为字符串。这部分看起来像这样:

<p><strong>Description :</strong> SCP-3976 est l'appellation collective d'une série de manifestations
 sous la forme de meurtres apparents de la célèbre autrice de romans policiers Agatha Christie<sup 
class="footnoteref"><a id="footnoteref-1" href="javascript:;" class="footnoteref" 
onclick="WIKIDOT.page.utils.scrollToReference('footnote-1')">1</a></sup>. À ce jour, toutes les instances
 de SCP-3976 ont été localisées dans les zones rurales du territoire anglais et tous les composants de 
chaque instances se trouvaient dans un rayon de 50&nbsp;mètres. De plus, toutes les instances sont 
apparues entre 22h31 et 08h36, heure locale, bien qu'aucun enregistrement ni témoin de la manifestation 
d'une instance n'existent.</p>

使用以下代码

response.xpath("string(//p)").get()

我明白了

Description : SCP-3976 est l'appellation collective d'une série de manifestations sous la forme de
 meurtres apparents de la célèbre autrice de romans policiers Agatha Christie1. À ce jour, toutes les 
instances de SCP-3976 ont été localisées dans les zones rurales du territoire anglais et tous les 
composants de chaque instances se trouvaient dans un rayon de 50\xa0mètres. De plus, toutes les instances 
sont apparues entre 22h31 et 08h36, heure locale, bien qu'aucun enregistrement ni témoin de la 
manifestation d'une instance n'existent.

这是一个很好的结果。只有,您可以看到Agatha Christie旁边是1元素的<sup>,我想通过xpath阻止它出现。我可以这样做吗?

谢谢,

python dom xpath scrapy
2个回答
1
投票

您可以使用几个w3lib.html函数(remove_tags, remove_tags_with_content),从结果中排除特定的标签。

请参见示例here


2
投票

尝试:

response.xpath('//p/text()').extract()

您很多人需要从新行等中剥离输出以使其形成正确的形状,但是它将排除1

© www.soinside.com 2019 - 2024. All rights reserved.