BeautifulSoup webscraping find_all( ): trouver la correspondance exacte

Je suis en utilisant Python et BeautifulSoup pour le web scraping.

Permet de dire que j'ai le code html suivant à gratter:

<body>
    <div class="product">Product 1</div>
    <div class="product">Product 2</div>
    <div class="product special">Product 3</div>
    <div class="product special">Product 4</div>
</body>

À l'aide de BeautifulSoup, je veux trouver UNIQUEMENT les produits avec l'attribut class="produit"
(seulement les Produits 1 et 2), et non pas "spécial" produits

Si je ne les suivants:

result = soup.find_all('div', {'class': 'product'})

le résultat comprend TOUS les produits (1,2,3 et 4).

Que dois-je faire pour trouver des produits dont la classe correspond EXACTEMENT à celle de "produit"??


Le Code que j'ai couru:

from bs4 import BeautifulSoup
import re

text = """
<body>
    <div class="product">Product 1</div>
    <div class="product">Product 2</div>
    <div class="product special">Product 3</div>
    <div class="product special">Product 4</div>
</body>"""

soup = BeautifulSoup(text)
result = soup.findAll(attrs={'class': re.compile(r"^product$")})
print result

De sortie:

[<div class="product">Product 1</div>, <div class="product">Product 2</div>, <div class="product special">Product 3</div>, <div class="product special">Product 4</div>]

OriginalL'auteur user2436815 | 2014-03-29