Ich habe HTML, das Einträge wie folgt enthält:
%Vor%und ich möchte den Text "Blog Entry" (und eine Reihe anderer Attribute, also suche ich nach einer generischen Antwort) extrahieren.
In jQuery würde ich
machen %Vor%Der nächste, den ich in Python bekommen konnte, ist:
%Vor%soupselect von Ссылка .
Soupselect versteht die vollständige CSS3-Selektorsyntax nicht, wie jQuery es jedoch tut. Gibt es in Python so ein Biest?
Vielleicht möchten Sie lxml CSSSSelector Klasse, die CSS-Selektoren zu implementieren versucht, wie in der w3c-Spezifikation beschrieben. Als eine Randnotiz, viele Leute empfange lxml zum Parsen von HTML / XML über BeautifulSoup jetzt, aus Gründen der Leistung und aus anderen Gründen.
Ich denke, der CSSSelector von lxml verwendet XPath für die Elementauswahl, aber Sie sollten die Dokumentation selbst überprüfen. Hier ist Ihr Beispiel mit lxml:
%Vor%Es ist wirklich sehr einfach, Schlüsselwortargumente zu verwenden.
%Vor%Alternativ dazu
%Vor% Sie können auch attrs
verwenden, um einen Selektor von .entry
anstelle von div.entry
:
(Beachten Sie, dass der Aufruf der Suppe oder eines Teils der Suppe gleichbedeutend ist mit .findAll()
.)
Als Listenverständnis ist das [b.text for e in soup('div', 'entry') for b in e(rel='bookmark')]
(erzeugt [u'Blog Entry']
).
Wenn Sie echte CSS3-Selektoren möchten, ist mir das für BeautifulSoup nicht bekannt. Alle (oder wenn nicht ganz, fast alle) davon können mit einfachen Verschachtelungen, Bedingungen und regulären Ausdrücken ausgeführt werden (Sie könnten auch entry(rel=re.compile('^bookmark$'))
verwenden). Wenn Sie so etwas wollen, betrachten Sie es als Ihr nächstes Projekt! Es könnte nützlich sein, Code zu verflachen und ihn für Web-Leute verständlicher zu machen.
Tags und Links python jquery css-selectors beautifulsoup