Python-Bibliothek für jQuery-ähnliche Textextraktion?

8

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?

    
thebjorn 13.12.2010, 07:08
quelle

4 Antworten

11

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%     
Haes 13.12.2010, 08:06
quelle
3

Vielleicht möchten Sie sich auch Pyquery anschauen. pyquery ist eine jquery-ähnliche Bibliothek für Python. Hier finden Sie hier

    
fizzbuzz 24.01.2014 07:20
quelle
2

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 :

zu bewirken %Vor%

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

    
Chris Morgan 13.12.2010 09:16
quelle
0

BeautifulSoup ermöglicht (grundlegende) CSS-Selektoren: Ссылка

Aber in den Dokumenten verweisen sie auf lxml ( Ссылка ), wenn Sie komplexere CSS-Selektoren benötigen.

    
corpaul 04.08.2014 16:45
quelle