#python #selenium #csv #web-scraping #beautifulsoup
#python #selenium #csv #веб-очистка #beautifulsoup
Вопрос:
<small class="truncate text-bold">Heart ...</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">hello</small>
<small class="truncate text-bold">trap</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">kick</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold blurple2">I 1</small>
<small class="truncate text-bold blurple2">I 2</small>
<small class="truncate text-bold blurple2">I 3</small>
<small class="truncate text-bold blurple2">I 4</small>
<small class="truncate text-bold blurple2">I 5</small>
<small class="truncate text-bold blurple2">I 6</small>
<small class="truncate text-bold blurple2">I 7</small>
for row in c_soup:
s_c = row.find("small",{'class':'truncate text-bold'}).text.strip()
s_i = row.find("small",{'class':'truncate text-bold blurple2'}).text.strip()
print(s_i ' ' s_c)
Мой вывод
- Я 1 Сердце….
- Я 2 предохранитель
- Я 3 предохранитель
- Я 4 привет
- Я 5 ловушка
- Я 6 Предохранитель
- Я 7 пинаю
- Я 8 Предохранитель
Я не хочу, чтобы в моем выводе был fuse
- Я 1 Сердце….
- Я 4 Привет
- Я 5 ловушка
- Я 7 пинаю
Ответ №1:
Если я вас правильно понял, вы хотите «заархивировать» тексты из <small>
тегов, но не те, которые содержат слово «Fuse»:
from bs4 import BeautifulSoup
html_doc = '''<small class="truncate text-bold">Heart ...</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">hello</small>
<small class="truncate text-bold">trap</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold">kick</small>
<small class="truncate text-bold">Fuse</small>
<small class="truncate text-bold blurple2">I 1</small>
<small class="truncate text-bold blurple2">I 2</small>
<small class="truncate text-bold blurple2">I 3</small>
<small class="truncate text-bold blurple2">I 4</small>
<small class="truncate text-bold blurple2">I 5</small>
<small class="truncate text-bold blurple2">I 6</small>
<small class="truncate text-bold blurple2">I 7</small>
'''
soup = BeautifulSoup(html_doc, 'html.parser')
for a, b in zip( soup.select('.truncate:not(.blurple2)'), soup.select('.blurple2') ):
if 'Fuse' in a.text:
continue
print(b.text ' ' a.text)
С принтами:
I 1 Heart ...
I 4 hello
I 5 trap
I 7 kick