Помогите с парсингом сайта на питоне

нашел на фрилансе заказ и решил спарсить для тренировки. Сразу скажу, я новичок. Пишу на Питоне. Сайт к слову вот "https://lesegais.ru/open-area/deal" . Дело в том, что сайт выглядить вроде как простая таблица, но на деле каждая строка в таблице это див блок, в котором может быть другой див блок, а может и не быть, + в некоторых ячейках есть пробелы или что то еще, а в некоторых нет. Как быть? Я пытался и через силениум и через BS4, но никак не пойму как разделить строки и вывести их в нормальном виде Спасибо огромное тем, кто откликнется!

Вот моя частица кода, которая выводит все блоки из главного дива.

from bs4 import BeautifulSoup
for p in range(1,2):
    with open(f'pages/page_{p}.html', 'r', encoding='utf-8') as f:
        src = f.read()
    soup = BeautifulSoup(src, 'lxml')
    main_div = soup.find('div',class_='ag-body-container')
    divs = main_div.find_all('div')
    for div in divs:
        print(div.text)

На выходе получаю что-то вроде этого:

0002561215505164022301647768ИП ФИ О022301647768ИП ФИ 56121550516415.06.2022Пр: 0 / Пк: 54 0002561215505164022301647768 ИП ФИО 022301647768 ИП ФИО 561215505164 15.06.2022 Пр: 0 / Пк: 54

Информация из открытого источника! Где-то есть какие-то слеши, где-то склеен текст, где-то он с пробелами и вот как мне это в нормальном виде спарсить?


Ответы (1 шт):

Автор решения: Alexey Rakhmaninov

Уже не помню синтаксис BS, но у тебя у этих дивов есть data атрибут "role", он принимает значения row или gridcell, что является строкой и вложенной в нее ячейкой. Найди все дивы с role="row", потом для каждого ищи вложенные div с role="gridcell", ну и извлекай текст.

Так же заметил что у них есть классы "ag-cell" и "ag-row", можно по ним искать если проще будет

→ Ссылка