Как удалить один вид данных из выходного CSV-файла, созданного BeautifuleSoup Python

#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. Я 1 Сердце….
  2. Я 2 предохранитель
  3. Я 3 предохранитель
  4. Я 4 привет
  5. Я 5 ловушка
  6. Я 6 Предохранитель
  7. Я 7 пинаю
  8. Я 8 Предохранитель

Я не хочу, чтобы в моем выводе был fuse

  1. Я 1 Сердце….
  2. Я 4 Привет
  3. Я 5 ловушка
  4. Я 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