Extraire des données avec beautifulSoup

a marqué ce sujet comme résolu.
Auteur du sujet

Bonsoir chers amis je travail avec python3.4 et beautifulsoup . Je voudrais savoir s’il est possible d’extraire deux balises d’un coup suivant leur ordre et s’il était

possible de recuperer le texte contenu dans toutes les balises imbriquées. Je m’explique.

<h1>Économie</h1>

<p>du texte ici relatif au premier h1<b>le texte contenu ici<em>important</em></b></p>

<h1>Sport</h1>

<p>du texte ici relatif au deuxième h1</p>

<p>du texte ici relatif au deuxième h1</p>

Ici telle que les données sont disposées on a un lien entre un h1 avec un p, donc si je prend d’abord les balise p ensuite les balises h1 je vais avoir une erreur, je ne vais pas savoir si tel p est relié avec tel h1, D’où ma question de savoir si on ne peut pas recuperer deux balises a la fois selon leur disposition.

<p>du texte ici relatif au premier h1<b>le texte contenu ici<em>important</em></b></p>

recuperer le texte: du texte ici relatif au premier h1 le texte contenu ici important.

J’ai fait des recherches mais je n’ai rien trouver de convainquant.

Merci pour vos réponses.

À la recherche de la connaissance.

+0 -0
Auteur du sujet

C’est pas possible Eskimon parce que en faisant h1 = soup.findall(’h1’) je récupère un tableau contenant uniquement les h1 il n’y a pas de p la dedans.

Merci.

À la recherche de la connaissance.

+0 -0

Salut,

Pour ton premier problème, regarde du côté de .next_sibling. Ca te donnera donc un truc du genre :

1
2
3
for title in soup.find_all('h1'):
    if title.next_sibling is not None and title.next_sibling.name == 'p':
        pass # bonjour, je suis un paragraphe qui suit un h1

Pour le second, tu as .get_text() qui te retourne une string contenant tout le texte d’un élément et de ses enfants :

1
2
soup = BeautifulSoup('<a>foo<b>bar</b>baz</a>', 'html.parser')
soup.find('a').get_text() # => 'foobarbaz'

C’est pas possible Eskimon parce que en faisant h1 = soup.findall(’h1’) je récupère un tableau contenant uniquement les h1 il n’y a pas de p la dedans.

Merci.

melo96

Non, tu récupérés des soup qui ont pour racine les h1 (et c’est pourquoi le for de tleb fonctionne)

ZdS, le best du Zeste ! | Tuto Arduino, blog, etc

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte