Comment puis-je extraire uniquement du texte dans le sélecteur d'éraflure en python
J'ai ce code
site = hxs.select("//h1[@class='state']")
log.msg(str(site[0].extract()),level=log.ERROR)
La sortie est
[scrapy] ERROR: <h1 class="state"><strong>
1</strong>
<span> job containing <strong>php</strong> in <strong>region</strong> paying <strong>$30-40k per year</strong></span>
</h1>
Est-il possible d'obtenir uniquement le texte, sans les balises html
source d'informationauteur user825904
Vous devez vous connecter pour publier un commentaire.
dans votre xpath vous sélectionnez
h1
balise qui aclass
attributstate
c'est pourquoi c'est la sélection de tout ce qui vient en
h1 element
si vous voulez juste de sélectionner le texte de
h1
tag tout ce que vous avez à faire est desi vous souhaitez sélectionner un texte de
h1
étiquette ainsi que ses enfants balises, vous devez utiliserdonc, la différence est
/text()
pour la balise de texte et//text()
pour le texte de la balise spécifique ainsi que ses enfants balisesmentionnés ci-dessous le code qui fonctionne pour vous
Vous pouvez utiliser BeautifulSoup
get_text()
fonctionnalité.Je n'ai pas la scrapy instance en cours d'exécution, donc je ne pouvais pas tester cela; mais vous pourriez essayer d'utiliser
text()
au sein de votre expression de recherche.Par exemple:
(obtenu à partir de la
tutoriel
)Vous pouvez utiliser BeautifulSoup à la bande de balises html, voici un exemple:
Vous pouvez alors bande de toutes les autres espaces, de nouvelles lignes, etc.
si vous ne voulez pas utiliser de modules supplémentaires, vous pouvez essayer de simple regex:
Vous pouvez utiliser
html2text