Как правильно распарсить полученные данные

Рейтинг: 0Ответов: 1Опубликовано: 19.01.2023

занимаюсь парсингом на python, во время сбора хлебных крошек, получаю вот такой ответ

['Главная', 'Каталог', 'Ванная комната\r\n                \n\n\n\n\n\n\n\nСтройматериалыИнструмент и крепежЛакокрасочные материалыОбои и панелиНапольные покрытияКерамическая плитка, керамогранитЭлектрикаСветОтопление, охлаждение и вентиляцияВодогазоснабжение и канализацияДвери, окна и замочно-скобяные изделияНовый годДача и баняДекор и солнцезащитаКухняХранение и хозтоварыПодарочные карты']

а мне необходимо получить только

['Главная', 'Каталог', 'Ванная комната'] 

остальное появляется потому что у последнего пункта Ванная комната есть выпадающее меню и BeautifulSoup забирает все вложенное тоже. Как мне вытащить только то что мне необходимо?

Вот мой код:

session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
category = soup.find_all('li', class_='breadcrumbs__item')
category = [c.text.strip() for c
            in category]

Вот исходник:

<div class="container">
                        <!--'start_frame_cache_IWoH5v'--><!--'end_frame_cache_IWoH5v'-->
            <ul class="breadcrumbs" aria-label="Breadcrumb" role="navigation" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="breadcrumbs__item" id="bx_breadcrumb_0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a href="/" itemprop="item">
            Главная
            <meta itemprop="name" content="Главная">
        </a>
        <meta itemprop="position" content="1" />
    </li><li class="breadcrumbs__item" id="bx_breadcrumb_1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a href="/catalog/" itemprop="item">
            Каталог
            <meta itemprop="name" content="Каталог">
        </a>
        <meta itemprop="position" content="2" />
    </li><li class="breadcrumbs__item breadcrumbs__item--sub" id="bx_breadcrumb_2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a href="/catalog/otoplenie-okhlazhdenie-i-ventilyatsiya/" itemprop="item">Отопление, охлаждение и вентиляция
            <span class="breadcrumbs__icon-wrap">
                <svg class="breadcrumbs__icon" width="16" height="17">
                <use xlink:href="/local/frontend_new/build/img/sprite.svg#arrow-down"></use>
                </svg>
            </span>
        </a>
        <meta itemprop="position" content="3" />
        <div class="breadcrumbs__dropdown">
            <ul class="breadcrumbs__submenu"><li><a href="/catalog/stroymaterialy/">Стройматериалы</a></li><li><a href="/catalog/instrument-i-krepezh/">Инструмент и крепеж</a></li><li><a href="/catalog/lakokrasochnye-materialy/">Лакокрасочные материалы</a></li><li><a href="/catalog/oboi-i-paneli/">Обои и панели</a></li><li><a href="/catalog/napolnye-pokrytiya/">Напольные покрытия</a></li><li><a href="/catalog/keramicheskaya-plitka-keramogranit/">Керамическая плитка, керамогранит</a></li><li><a href="/catalog/elektrika/">Электрика</a></li><li><a href="/catalog/svet/">Свет</a></li><li><a href="/catalog/vodogazosnabzhenie-i-kanalizatsiya/">Водогазоснабжение и канализация</a></li><li><a href="/catalog/dveri-okna-i-zamochno-skobyanye-izdeliya/">Двери, окна и замочно-скобяные изделия</a></li><li><a href="/catalog/vannaya-komnata/">Ванная комната</a></li><li><a href="/catalog/novyy-god/">Новый год</a></li><li><a href="/catalog/dacha-i-banya/">Дача и баня</a></li><li><a href="/catalog/dekor-i-solntsezashchita/">Декор и солнцезащита</a></li><li><a href="/catalog/kukhnya/">Кухня</a></li><li><a href="/catalog/khranenie-i-khoztovary/">Хранение и хозтовары</a></li><li><a href="/catalog/podarochnye-karty/">Подарочные карты</a></li>
            </ul>
        </div>

Ответы

▲ 0

Вообщем вот такой ответ

    category[2] = category[2].split('\n')[0].strip()
    category = (" / ".join(str(x) for x in category))

Главная / Каталог / Ванная комната