• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

проблема парсинга html НА python

aleks1234

New member
23.02.2020
2
0
BIT
0
здравствуйте уважаемые форумчане
я новичок в программирование уже два дня борюсь c проблема
если кто поможет буду очень рад + c меня магар $

спарсил нужный <div> библиотекой BeautifulSoup
но возникла проблема загвоздка в том что имена серверов в div идут как обычный текст

все элементы меняются я их отметил ---> <---
также меняется язык +
серверов может быть больше и ников тоже
-------------------------------------- - задача -------------------------------------
записать в переменную имя сервера server_ru и ники находятся в <strong>
записать в переменную имя сервера server_oce и ники находятся в <strong>
записать в переменную имя сервера server__br и ники находятся в <strong>

потом исходя от имени сервера нужна ники передать в функцию
функция принимает имя сервера и ники для дальнейшей обработки
но это уже мелочи
=================================== пример html ==========================================
<div>
---> здесь не нужный текст <--- <br/><br/>
---> сервер_ru <--- <br/>
<strong style="font-size: 30px;line-height:36px;"> ---> здесь нужный текст ник <--- </strong>
<strong style="font-size: 30px;line-height:36px;"> ---> здесь нужный текст ник <--- </strong>
<strong style="font-size: 30px;line-height:36px;"> ---> здесь нужный текст ник <--- </strong>
<br/><br/>
---> сервер_oce <--- <br/>
<strong style="font-size: 30px;line-height:36px;"> ---> здесь нужный текст ник <--- </strong>
<br/><br/>
---> сервер_br <--- <br/><br/>
<strong style="font-size: 30px;line-height:36px;"> --->здесь нужный текст ник <--- </strong>
<strong style="font-size: 30px;line-height:36px;"> ---> здесь нужный текст ник <--- </strong>
<br/><br/>
</div>
 

f22

Codeby Academy
Gold Team
05.05.2019
1 841
225
BIT
1 043
Первое, что пришло в голову
Python:
target_div = """
<div>
 здесь не нужный текст  <br/><br/>
 сервер_ru  <br/>
<strong style="font-size: 30px;line-height:36px;">  здесь нужный текст ник1  </strong>
<strong style="font-size: 30px;line-height:36px;">  здесь нужный текст ник2  </strong>
<strong style="font-size: 30px;line-height:36px;">  здесь нужный текст ник 3 </strong>
<br/><br/>
 сервер_oce  <br/>
<strong style="font-size: 30px;line-height:36px;">  здесь нужный текст ник 4 </strong>
<br/><br/>
 сервер_br  <br/><br/>
<strong style="font-size: 30px;line-height:36px;"> здесь нужный текст ник 5  </strong>
<strong style="font-size: 30px;line-height:36px;">  здесь нужный текст ник 6 </strong>
<br/><br/>
</div>"""

flag_string = "<strong style="
new_div_string = target_div.split("\n")
server_nicks = []

counter = 0
string_to_add = ""

for line in new_div_string:
    if flag_string in line:
        if counter > 0 and flag_string not in new_div_string[counter-1]:
            # Добавляем сервер
            string_to_add += new_div_string[counter-1].split("<")[0] + ";"
            # Добавляем ник
            string_to_add += line.split(">")[1].split("<")[0] + ";"
        else:
            # Добавляем ник
            string_to_add += line.split(">")[1].split("<")[0] + ";"           
    elif len(line) == 10:
        if string_to_add != "":
            server_nicks.append(string_to_add)
            string_to_add = ""
    counter += 1

for line in server_nicks:
    print(line)

сервер_ru ; здесь нужный текст ник1 ; здесь нужный текст ник2 ; здесь нужный текст ник 3 ;
сервер_oce ; здесь нужный текст ник 4 ;
сервер_br ; здесь нужный текст ник 5 ; здесь нужный текст ник 6 ;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!