Ich benutze Python und BeautifulSoup für Web Scraping.
Sagen wir, ich habe den folgenden HTML-Code zum scrape:
%Vor%Mit BeautifulSoup möchte ich NUR die Produkte mit dem Attribut class="product" finden (nur Produkt 1 und 2), nicht die "speziellen" Produkte
Wenn ich Folgendes tue:
%Vor%Das Ergebnis enthält ALLE Produkte (1,2,3 und 4).
Was soll ich tun, um Produkte zu finden, deren Klasse GENAU mit "Produkt" übereinstimmt?
Der Code, den ich ausgeführt habe:
%Vor%Ausgabe:
%Vor% In BeautifulSoup 4 wird das Attribut class
(und mehrere andere Attribute wie accesskey
und das Attribut headers
für Tabellenzellenelemente) als Menge behandelt. Sie stimmen mit einzelnen Elementen überein, die im Attribut aufgeführt sind. Dies folgt dem HTML-Standard.
Daher können Sie die Suche nicht auf nur eine Klasse beschränken.
Sie müssen hier eine benutzerdefinierte Funktion verwenden, um mit der zu vergleichen Klasse stattdessen:
%Vor% Ich habe eine lambda
verwendet, um eine anonyme Funktion zu erstellen. Jedes Tag wird auf den Namen abgestimmt (muss 'div'
sein), und das Klassenattribut muss genau der Liste ['product']
entsprechen; z.B. habe nur den einen Wert.
Demo:
%Vor%Der Vollständigkeit halber sind hier alle solche Attribute aus dem BeautifulSoup-Quellcode aufgeführt:
%Vor%Tags und Links python html regex web-scraping beautifulsoup