Я пытаюсь очистить веб-сайт, и мой образец html выглядит следующим образом
<div class="ism-true"><!-- message -->
<div id="post_message_5437898" data-spx-slot="1">
OK, although it's been several weeks since I installed the
<div><label>Quote:</label></div>
<div class="panel alt2" style="border:1px inset">
<div>
Originally Posted by <strong>DeltaNu1142</strong>
</div>
<div style="font-style:italic">The very first thing I did </div>
</div>
</div>When I got my grille back from the paint shop, I went to work on the
</div>
<!-- / message --></div>
<div class="ism-true"><!-- message -->
<div id="post_message_5125716">
<div style="margin:1rem; margin-top:0.3rem;">
<div><label>Quote:</label></div>
<div class="panel alt2" style="border:1px inset">
<div>
Originally Posted by <strong>HCFX2013</strong>
</div>
<div style="font-style:italic">I must be the minority that absolutely can't .</div>
</div>
</div>Hello World.
</div>
<!-- / message --></div>
Я хочу текст, который находится только в классе сообщений, но не в классе "панели alt2". Положение класса внутри "div id =" post_message_ "постоянно меняется. Как можно игнорировать текст в классе alt2 панели.
Мой код.
text = []
for item in soup.findAll('div',attrs={"class":"ism-true"}):
result = [item.get_text(strip=True, separator=" ")]
div = item.find('div', class_="panel alt2")
if div :
result[0] = ' '.join(result[0].split(div.text.split()[-1])[1:])
text.append(result[0])
else:
text.append(result)
Только приведенный выше код дает мне текст, когда "Panel alt2" является первым классом внутри в классе div. Это не работает, если положение класса меняется и выдает ошибку как "List index out of range". Можете ли вы помочь мне игнорировать эти классы. Ожидаемый результат
[OK, although it's been several weeks. When I got my grille back from the paint shop, I went to work on the],[Hello world]
образец сайта (https://www.f150forum.com/f118/fab-fours-black-steel-elite-bumper-adaptive-cruise-relocation-bracket-387234/)