> Modules non standards > Autres modules non standards > Beautiful Soup pour le parsing HTML
Beautiful Soup pour le parsing HTML
Beautiful Soup : package pour parser facilement, avec un parseur de type DOM, un document html, même mal formé (pas forcément XHTML).
Utilisation du package : from bs4 import BeautifulSoup.
Construction de l'objet :
- à partir du texte : text = '<html><body><div class="myList" id="myId"><ul>Une liste :<li>item1</li><li>item2</li></ul></div><div>un autre paragraphe.</div></body></html>'; doc = BeautifulSoup(text, 'html.parser')
- ou sinon, à partir d'un filehandle : doc = BeautifulSoup(fh, 'html.parser').
Accès aux éléments :
- doc.div : le premier élément div du document (objet bs4.element.Tag), ici <div class="myList" id="myId"><ul>Une liste :<li>item1</li><li>item2</li></ul></div>.
- doc.div.li : le premier élément li du premier élément div, ici <li>item1</li>.
- sur l'élément ramené, on peut appliquer les mêmes principes : myUl = doc.div.ul; myUl.li donne ici <li>item1</li>.
- doc.div.li.string : le contenu d'un élément, ici item1
- doc.li.parent : le parent du premier élément li, ici <ul>Une liste :<li>item1</li><li>item2</li></ul>
- doc.li.parent.name : le nom de l'élément, ici ul.
- doc.div.attrs : les attributs d'un élément, ici {u'class': [u'myList']}.
- doc.div['class'] : un attribut d'un élément, ici [u'myList'].
- doc.div['id'] : un attribut d'un élément qui ne peut prendre qu'une seule valeur, ici 'myId'.
- doc.find_all('li') : tous les li d'un document, ici [<li>item1</li>, <li>item2</li>]
- doc.div.ul.contents : les sous-éléments d'un élément donné qui peuvent être à la fois du texte et des éléments, ici [u'Une liste :', <li>item1</li>, <li>item2</li>].
- doc.div.next_sibling : l'élément frère juste après, ici <div>un autre <b>paragraphe</b>.</div> (pareil avec previous_sibling)
- doc.select('div.myList li') : select css qui permet de faire à peu près toutes les sélections qu'on ferait avec CSS, renvoie ici [<li>item1</li>, <li>item2</li>].
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert