Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.11.2022
Сообщений: 6

Распарсить многоуровневую переменную структуру

13.12.2022, 12:03. Показов 843. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Помогите распарсить нижеприведенную структуру. Если бы структура была постоянной, то проблем нет. Но количество параметров, т.е. тегов < div class ="row controw" > непостоянно. Количество тегов, в которых описаны параметры =2шт. В первом теге < div class ="col-12 col-lg-3 contzag" > расположено название параметра, а во втором < div class ="col-12 col-lg-9 contdata" > описание.
Опять таки, только извлечь контекст из этих тегов не проблема. Проблема в том, что бы распознать какой параметр есть и его описание, а кокого нет, так как потом описание параметров надо сохранить в определенных столбцах (Менеджер, Телефон, E-mail, Адрес, Дата) таблицы (csv-файл). Т.е. переменные Менеджер, Телефон, E-mail, Адрес, Дата обязательно должны быть заполнены(хоть пустой строкой).

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        # Контактные данные
        '''
        < div class ="contacts mt30 mb50" id="contacts" >
        < div class ="row controw" >
        < div class ="col-12 col-lg-3 contzag" > Контактое лицо:< / div >
        < div class ="col-12 col-lg-9 contdata" > Николай < / div >
        < / div >
        < div class ="row controw" >
        < div class ="col-12 col-lg-3 contzag" > Телефон:< / div >
        < div class ="col-12 col-lg-9 contdata" > +375 29 5300809 < / div > < / div >
        < div class ="row controw" >
        < div class ="col-12 col-lg-3 contzag" > E-mail:< / div >
        < div class ="col-12 col-lg-9 contdata" > hh @ izm.by < / div > < / div >
        < div class ="row controw" >
        < div class ="col-12 col-lg-3 contzag" > Место работы:</div >
        < div class ="col-12 col-lg-9 contdata" > Минск, Партизанский проспект, 14 </ div > < / div >
        < div class ="row controw" >
        < div class ="col-12 col-lg-3 contzag" > Размещено:</ div >
        < div class ="col-12 col-lg-9 contdata" itemprop="datePosted" content="2022-11-25" > 25.11.2022 < / div >
        < / div >
        < div itemprop="jobLocation" itemscope="" itemtype="http://schema.org/Place" >
        < span itemprop="address" content="Минск" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" >
        < meta itemprop="addressLocality" content="Минск, Партизанский проспект, 14" >
        < meta itemprop="addressRegion" content="Минская область" >
        < meta itemprop="addressCountry" content="BY" >
        < / span > < / div > < / div >'''
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2022, 12:03
Ответы с готовыми решениями:

Распарсить структуру с проверкой
Есть структура: G = Буквы в структуре меняются т.е. может быть и такое: G = Есть словарь значений: D = {'G10': , , ], ...

Как создать многоуровневую структуру?
Как создать многоуровневую структуру? Допустим есть такая структура: Public Structure MainInfo Dim Name As String...

Списки имеют многоуровневую структуру
СТУДЕНТЫ, ЧИТАЙТЕ ТЕМУ ВНИМАТЕЛЬНО, ЕСЛИ В ЗАДАЧЕ ЕСТЬ ФРАЗА «СПИСКИ ИМЕЮТ МНОГОУРОВНЕВУЮ СТРУКТУРУ» Рассмотрим такую задачу: ...

1
0 / 0 / 0
Регистрация: 26.11.2022
Сообщений: 6
14.12.2022, 12:53  [ТС]
Доброго времени суток! Не буду озвучивать свою ошибочную логику.
Сам спросил - сам отвечу. Правду говорят, что утро вечера мудренее
1)Получаю из "супа карточки"структуру, которая показана в вопросе
Python
1
2
FirmaKontacts = soup_kart.find('div', attrs={'class': 'contacts mt30 mb50', 'id': 'contacts'})
print('384 FirmaKontacts=', FirmaKontacts)
2)получу из "супа" FirmaKontacts ВСЕ "контейнеры" < div class ="row controw" > с параметрами
Python
1
2
3
4
5
6
7
Face = ''
Telef = ''
E_mail = ''
Adress_job = ''
datePosted = ''
div_rows =FirmaKontacts.find_all('div', attrs={'class': 'row controw'})
print('div_rows=', div_rows)
3)Поскольку в каждом row controw всегда 2 вложенных тега
col-12 col-lg-3 contzag и col-12 col-lg-9 contdata, то можно к ним обращаться напрямую
и пропускать через фильтр начало строки с именем параметра
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        for div_row in div_rows:
            Param_Name=div_row.find('div', attrs={'class': "col-12 col-lg-3 contzag"}).text.strip()
            Param_text = div_row.find('div', attrs={'class': "col-12 col-lg-9 contdata"}).text.strip()
            print('Param_Name=', Param_Name)
            if Param_Name != None and Param_Name.startswith("Контактое") == True:
               Face = Param_text
               print('Face=', Face)
            elif Param_Name != None and Param_Name.startswith("Телефон") == True:
               Telef = Param_text
               print('Telef=', Telef)
            elif Param_Name != None and Param_Name.startswith("E-mail") == True:
                E_mail = Param_text
                print('E_mail=', E_mail)
            elif Param_Name != None and Param_Name.startswith("Место работы") == True:
                Adress_job = Param_text
                print('Adress_job=', Adress_job)
            elif Param_Name != None and Param_Name.startswith("Размещено") == True:
                datePosted = Param_text
                print('datePosted=', datePosted)
Переменные заполнены. Осталось их записать в файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2022, 12:53
Помогаю со студенческими работами здесь

Определить номер последнего положительного числа в списке. Списки имеют многоуровневую структуру
Определить номер в списке последнего положительного числа. Списки имеют многоуровневую структуру. Помогите, пожалуйста, сегодня на зачёт...

Распарсить переменную
я получаю переменную $text, в ней находится html мне нужно удалить из нее заголовок h1 и поместить его в другую переменную. решил...

Распарсить нестандартную структуру и заполнить ею ячейки
Добрый день ! Посдкажите пожалуйста, как распарсить вот такую структуру и получить что-то удобочитаемое для VBA, что бы обращаться к...

Распарсить строку и записать значения в структуру
Всем привет, не могу сделать следующие: нужно распарсить определенную строку, на определенные части, затем эти части записать в структуру ...

Создать переменную структуру
Помгите пожалуйста! В задаче требуется создать переменную структуру, но везде где есть числовые данные он выдает ошибку(строки 23,31, 32,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru