BeautifulSoup webscraping find_all( ): Suche nach exakter übereinstimmung

Bin ich mit Python und BeautifulSoup für web-scraping.

Können sagen, ich habe den folgenden html-code zu kratzen:

<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>

Mit BeautifulSoup, ich will zu finden, NUR die Produkte mit dem Attribut class="Produkt"
(nur Produkt 1 und 2), nicht die "speziellen" Produkte

Wenn ich den folgenden Code:

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

das Ergebnis enthält ALLE Produkte (1,2,3 und 4).

Was soll ich tun, um Produkte zu finden, deren Klasse GENAU entspricht, 'Produkt'??


Ich den Code ran:

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

Ausgabe:

[<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>]

InformationsquelleAutor user2436815 | 2014-03-29

Schreibe einen Kommentar