1
votes

Utilisez BeautifulSoup pour rechercher du texte partiel dans une balise H à l'intérieur d'une classe DIV

J'ai un code HTML dans le contenu de la classe DIV qui ressemble à

AS20194 Multi-functional Massage Chair

Mon code Python est

Brookstone
                         AS20194 Multi-functional Massage Chair

Et il renvoie p >

soup.find('div',attrs={'class':'content'}).h2.text

Comment mettre à jour les codes pour qu'il renvoie

<h2>
 <strong>
 Brookstone
 </strong>
 AS20194 Multi-functional Massage Chair
</h2>


2 commentaires

Est-ce que cela répond à votre question? Exclure les balises indésirables sur Beautifulsoup Python


Non. La réponse dans ce fil était d'exclure le fort, mais je demandais d'obtenir celui qui n'est pas fort.


3 Réponses :


0
votes

Pas vraiment un maître de Beautiful soupe, mais ce que je vois, c'est qu'il renvoie correctement la partie "texte" du code. Ce que vous voudrez peut-être essayer, c'est de voir dans la documentation bs4 s'il existe un moyen de sélectionner un contenu non formaté.


1 commentaires

La partie Brookstone est à l'intérieur et je voudrais m'en débarrasser dans le résultat. Des pensées?



0
votes

Vous pouvez utiliser extract () pour ignorer la balise strong . Vous pouvez l'essayer:

AS20194 Multi-functional Massage Chair

La sortie sera: p>

import requests
from bs4 import BeautifulSoup
import re

html_doc="""<h2>
 <strong>
 Brookstone
 </strong>
 AS20194 Multi-functional Massage Chair
</h2>"""

soup = BeautifulSoup(html_doc, 'lxml')

for strong in soup.find("strong"):
    strong.extract()
print(soup.text)


0 commentaires

2
votes

Pas besoin de faire .extract () , vous pouvez utiliser .find_next_sibling () avec le paramètre text = True :

 AS20194 Multi-functional Massage Chair

Imprimés:

from bs4 import BeautifulSoup


txt = '''<h2>
 <strong>
 Brookstone
 </strong>
 AS20194 Multi-functional Massage Chair
</h2>'''

soup = BeautifulSoup(txt, 'html.parser')

print(soup.h2.strong.find_next_sibling(text=True))


0 commentaires