xpath string () исключает указанные c узлы из рендеринга - PullRequest
1 голос
/ 11 февраля 2020

Я использую scrapy и xpath, чтобы попытаться найти конкретный c узел в 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 предотвратить его появление. Могу я это сделать?

спасибо,

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Попробуйте:

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

Вам нужно убрать вывод из новых строк и т. Д. c. чтобы придать ему правильную форму, но это исключит 1.

1 голос
/ 11 февраля 2020

Вы можете использовать пару w3lib.html функций (remove_tags, remove_tags_with_content), чтобы исключить указанные c теги из ваших результатов.

См. Пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...