BeautifulSoup: Wie man verschachtelte divs
Folgenden code:
<html>
<body>
<div class="category1" id="foo">
<div class="category2" id="bar">
<div class="category3">
</div>
<div class="category4">
<div class="category5"> test
</div>
</div>
</div>
</div>
</body>
</html>
Gewusst wie: extrahieren Sie das Wort test
aus <div class="category5"> test
mit BeautifulSoup ich.e, wie man mit verschachtelten divs? Ich habe versucht Suche auf dem Internet, aber ich finde nicht jeden Fall behandeln, dass ein eingängiges Beispiel, so richte ich diese ein. Danke.
- Was ist mit verschachtelten divs? Was versuchen Sie zu extrahieren, und warum verschachtelte divs bilden ein Hindernis für dieses Ziel? Sie können nur die Suche nach diesen speziellen divs verschachtelt oder nicht.
- Mögliche Duplikate von: stackoverflow.com/questions/1058599/...
- Ich denke, das problem kommt von der Tatsache, dass die divs verschachtelt sind, in jedem anderen, denn wenn ich mysoup.findAll('div', attrs={'class':'category5'}) der return-Wert Keiner !
- es ist nicht eine doppelte Lesen die andere Frage, die du verlinkt uns auch. Hier sind wir mit attrs={...} die Lösung ist anders, wenn man eine Reine Tags wie <td>
- Nein, wenn Sie nicht finden können, das div mit der Suche, dann ist es nicht in den Baum.
- welche version von BeautifulSoup verwenden Sie? Was ist eigentlich HTML? Wenn Sie mit BeautifulSoup, haben Sie
lxml
installiert? - dies wurde nichts zu tun, mit Schachteln. Die OP kann nicht finden, ein bestimmtes div, aber die Suche ist korrekt. Was bedeutet, dass das div-Element nicht da ist, die hervorgerufenen werden konnte durch mehrere verschiedene Dinge, nicht zuletzt durch die version von BeautifulSoup und welche parser verwendet wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
xpath sollte straight forward Antwort, aber dies wird nicht unterstützt, in
BeautifulSoup
.Aktualisiert: mit BeautifulSoup-Lösung
Dazu gegeben, dass Sie wissen, die Klasse und element (div) in diesem Fall können Sie verwenden ein
for/loop
mitattrs
zu bekommen, was Sie wollen:Ich kein problem haben, extrahieren Sie den text aus dem html-Beispiel, wie @MartijnPieters vorgeschlagen, die Sie benötigen, um herauszufinden, warum Ihre div element fehlt.
Ein weiteres update
Als Sie fehlt
lxml
als ein parser fürBeautifulSoup
, das ist der Grund, warum Keiner war zurückgekehrt, als Sie noch nicht analysiert alles, was mit zu beginnen. Installierenlxml
sollte sich eine Lösung für Ihr Problem.Können Sie erwägen, mit
lxml
oder ähnliches, unterstützt xpath, tot einfach, wenn Sie mich Fragen.BeautifulSoup
, wird aber nicht erwähnt, wenn eine andere Bibliothek akzeptiert werden. Ich kann Sie Bearbeiten und fügen Sie eine Lösung für die NutzungBeautifulSoup
zu.type object 'BeautifulSoup' has no attribute 'RobustHTMLParser'
auch sollte es nichtfrom bs4 import BeautifulSoup
? Vielen Dank für Eure HilfeBeautifulSoup
? wennfrom bs4 ...
für Sie arbeitet, ist es auch fein. Auch, ich bin wirklich darauf hindeutet, Sie wechseln auf eine andere Bibliothek wieBeautifulSoup
ist eher nicht gepflegt und langsamer in der Leistung im Vergleich zu anderen Bibliothekenbs4' of course, i'm using **3.2.1** which is even behind your version. I will edit the answer for
bs4`BeautifulSoup
sowiesolxml
als ein parser fürBeautifulSoup
. Können Sie schnell versuchen, in Ihre Konsolepython -c "import lxml"
und sehen, wenn es scheitert?lxml
richtig funktioniert? versuchen Sie meine zweite Antwort mitlxml
und sehen, ob es funktioniert