Obtenez le nom et le contenu de la classe en utilisant Beautiful Soup
À l'aide de Magnifiques Soupe module, comment puis-je obtenir les données d'un div
balise dont le nom de classe est feeditemcontent cxfeeditemcontent
? Est-il:
soup.class['feeditemcontent cxfeeditemcontent']
ou:
soup.find_all('class')
C'est la source HTML:
<div class="feeditemcontent cxfeeditemcontent">
<div class="feeditembodyandfooter">
<div class="feeditembody">
<span>The actual data is some where here</span>
</div>
</div>
</div>
et c'est le code Python:
from BeautifulSoup import BeautifulSoup
html_doc = open('home.jsp.html', 'r')
soup = BeautifulSoup(html_doc)
class="feeditemcontent cxfeeditemcontent"
source d'informationauteur Rajeev
Vous devez vous connecter pour publier un commentaire.
Essayer, c'est peut-être trop pour cette chose simple, mais il fonctionne:
Belle Soupe 4 traite de la valeur de l'attribut "class" comme une liste plutôt qu'une chaîne, sens jadkik94 la solution peut être simplifiée:
soup.findAll("div", class_="feeditemcontent cxfeeditemcontent")
Donc, Si je veux obtenir toutes les balises div de classe d'en-tête
<div class="header">
de stackoverflow.com un exemple avec BeautifulSoup serait quelque chose comme:Il est déjà dans bs4 la documentation.
Vérifier ce rapport de bug: https://bugs.launchpad.net/beautifulsoup/+bug/410304
Comme vous pouvez le voir, la Belle soupe ne peux pas vraiment comprendre
class="a b"
que deux classesa
etb
.Cependant, comme il apparaît dans le premier commentaire, une simple regexp devrait suffire. Dans votre cas:
Note: Qui a été résolu dans la récente version bêta. Je n'ai pas passé à travers les docs des versions récentes, peut-être vous pourriez le faire. Ou si vous voulez obtenir ce travail à l'aide de la version plus ancienne, vous pouvez utiliser le ci-dessus.