Не получается спарсить многоуровневое меню - Python
Формулировка задачи:
Доброго времени суток господа! Уже пару дней бьюсь и не могу написать одну из частей парсера, а точнее сбор ссылок из меню на сайте, структуру приложу ниже. Проблема в том что в списках есть ссылки на подсписки и сами подсписки, и в этих подсписках всё может повторятся. Ссылки нужно получить только из крайних подсписков, иначе если перейти по ссылке которая рядом с её подсписком то на этой странице будут все товары, а потом мы идём по ссылкам в подсписке а там эти же товары только разибитые по категориям - страницам, и того у нас в массиве уже дублируются все товары 2 раза, а страниц то много, и дубляжей получается ещё больше.
Вот, как-то так, надеюсь что смог понятно объяснить что же мне надо, у самого меня пока что не чего не получается так как я только начал учить Python!
<nav class="categories"> <ul> <li class="expanded "><a href="/catalog/transport_i_vnedorozhnaya_tekhnika/?list=yes">Транспорт и внедорожная техника</a> <ul> <li class="expanded "><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_motornye_masla/">Моторные масла</a> <ul> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_motornye_masla_dlya_legkovykh_avtomobiley/">Для легковых автомобилей</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_motornye_masla_dlya_gruzovykh_avtomobiley/">Для грузовых автомобилей</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_motornye_masla_dlya_dvigateley_rabotayushchikh_na_gazoobraznom_toplive/">Для двигателей, работающих на газообразном топливе</a> </li> </ul> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_universalnye_traktornye_masla/">Универсальные тракторные масла</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_transmissionnye_masla/">Трансмиссионные масла</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_zhidkosti_dlya_akpp/">Жидкости для АКПП</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_zhidkosti_dlya_gur_i_gidrosistem/">Жидкости для ГУР и гидросистем</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_avtomobilnye_plastichnye_smazki_i_pasty/">Автомобильные пластичные смазки и пасты</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_antifrizy/">Антифризы</a> </li> <li><a href="/catalog/transport_i_vnedorozhnaya_tekhnika_servisnye_produkty/">Сервисные продукты</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/industrialnye_smazochnye_materialy/?list=yes">Индустриальные смазочные материалы</a> <ul> <li><a href="/catalog/industrialnye_smazochnye_materialy_mashinnye_masla_obshchego_naznacheniya/">Машинные масла общего назначения</a> </li> <li class="expanded "><a href="/catalog/industrialnye_smazochnye_materialy_gidravlicheskie_zhidkosti/">Гидравлические жидкости</a> <ul> <li><a href="/catalog/industrialnye_smazochnye_materialy_gidravlicheskie_zhidkosti_na_mineralnoy_osnove_soderzhat_zn/">На минеральной основе, содержат Zn</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_gidravlicheskie_zhidkosti_na_mineralnoy_osnove_ne_soderzhat_zn/">На минеральной основе, не содержат Zn</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_gidravlicheskie_zhidkosti_na_sinteticheskoy_osnove/">На синтетической основе</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_gidravlicheskie_zhidkosti_ognestoykie/">Огнестойкие</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/industrialnye_smazochnye_materialy_reduktornye_masla/">Редукторные масла</a> <ul> <li><a href="/catalog/industrialnye_smazochnye_materialy_reduktornye_masla_na_mineralnoy_osnove/">На минеральной основе</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_reduktornye_masla_na_sinteticheskoy_osnove/">На синтетической основе</a> </li> </ul> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_napravlyayushchikh_tsepey_i_pnevmoinstrumenta/">Масла для направляющих, цепей и пневмоинструмента</a> </li> <li class="expanded "><a href="/catalog/industrialnye_smazochnye_materialy_kompressornye_masla/">Компрессорные масла</a> <ul> <li><a href="/catalog/industrialnye_smazochnye_materialy_kompressornye_masla_na_mineralnoy_osnove/">На минеральной основе</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_kompressornye_masla_na_sinteticheskoy_osnove/">На синтетической основе</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_kompressorov_kholodilnogo_oborudovaniya/">Масла для компрессоров холодильного оборудования</a> <ul> <li><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_kompressorov_kholodilnogo_oborudovaniya_na_mineralnoy_osnove/">На минеральной основе</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_kompressorov_kholodilnogo_oborudovaniya_polusinteticheskie/">Полусинтетические</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_kompressorov_kholodilnogo_oborudovaniya_na_sinteticheskoy_osnove/">На синтетической основе</a> </li> </ul> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_turbinnye_masla/">Турбинные масла</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_masla_dlya_tekstilnykh_mashin/">Масла для текстильных машин</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_belye_masla/">Белые масла</a> </li> <li><a href="/catalog/masla_teplonositeli/">Масла-теплоносители</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_elektroizolyatsionnye_masla/">Электроизоляционные масла</a> </li> <li><a href="/catalog/industrialnye_smazochnye_materialy_tsilindrovye_masla/">Цилиндровые масла</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti/?list=yes">Смазочно-охлаждающие жидкости (СОЖ)</a> <ul> <li class="expanded "><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem/">Для обработки металлов резанием</a> <ul> <li class="expanded "><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye/">Водосмешиваемые</a> <ul> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye_universalnogo_primeneniya/">Универсального применения</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye_dlya_alyuminiya_i_vysokolegirovannykh_staley/">Для алюминия и высоколегированных сталей</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye_dlya_magniya/">Для магния</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye_dlya_tsvetnykh_metallov/">Для цветных металлов</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_vodosmeshivaemye_sinteticheskie_zhidkosti_dlya_shlifovaniya/">Синтетические жидкости для шлифования</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_nevodosmeshivaemye/">Неводосмешиваемые</a> <ul> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_nevodosmeshivaemye_universalnogo_primeneniya/">Универсального применения</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_rezaniem_nevodosmeshivaemye_zhidkosti_dlya_elektroerozionnoy_obrabotki/">Жидкости для электроэрозионной обработки</a> </li> </ul> </li> </ul> </li> <li class="expanded "><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_davleniem_nevodosmeshivaemye/">Для обработки металлов давлением</a> <ul> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_davleniem_vodosmeshivaemye/">Водосмешиваемые</a> </li> <li><a href="/catalog/vodosmeshivaemye_universalnogo_primeneniya_universalnogo_primeneniya_vodosmeshivaemye_nevodosmeshivaemye/">Неводосмешиваемые</a> </li> <li><a href="/catalog/smazochno_okhlazhdayushchie_zhidkosti_dlya_obrabotki_metallov_davleniem_tverdye/">Твердые</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/razdelitelnie_sostavi_dla_proseccov_obrabotki_metallov_davleniem/">Разделительные составы для процессов горячей обработки металлов давлением</a> <ul> <li><a href="/catalog/razdelitelnie_sostavi_dla_proseccov_obrabotki_metallov_davleniem_vodosmeshivaemie_grafit/">Водосмешиваемые графитосодержащие составы для горячей штамповки</a> </li> <li><a href="/catalog/razdelitelnie_sostavi_dla_proseccov_obrabotki_metallov_davleniem_nevodosmeshivaemie_grafit/">Неводосмешиваемые графитосодержащие составы для горячей штамповки</a> </li> <li><a href="/catalog/razdelitelnie_sostavi_dla_proseccov_obrabotki_metallov_davleniem_vodosmeshivaemie_nongrafit/">Водосмешиваемые безграфитовые составы для горячей штамповки</a> </li> <li><a href="/catalog/razdelitelnie_sostavi_dla_proseccov_obrabotki_metallov_davleniem_litie/">Разделительные составы для литья под давлением</a> </li> </ul> </li> <li><a href="/catalog/sredstva_po_uhodu_za_smazochno_ohlazhdayuschimi_zhidkostyami/">Средства по уходу за СОЖ</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_dlya_obrabotki_metallov_davleniem/?list=yes">Очистители и антикоррозионные составы</a> <ul> <li class="expanded "><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_ochistiteli/">Очистители</a> <ul> <li class="expanded "><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_ochistiteli_vodosmeshivaemye/">Водосмешиваемые</a> <ul> <li><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_ochistiteli_vodosmeshivaemye_dlya_ispolzovaniya_v_pogruzhnykh_vannakh/">Для использования в погружных ваннах</a> </li> <li><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_ochistiteli_vodosmeshivaemye_dlya_ispolzovaniya_v_moyushchikh_apparatakh/">Для использования в моющих аппаратах</a> </li> </ul> </li> <li><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_ochistiteli_nevodosmeshivaemye_na_osnove_rastvoriteley/">Неводосмешиваемые (на основе растворителей)</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_antikorrozionnye_sostavy/">Антикоррозионные составы</a> <ul> <li><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_antikorrozionnye_sostavy_vodosmeshivaemye/">Водосмешиваемые</a> </li> <li><a href="/catalog/ochistiteli_i_antikorrozionnye_sostavy_antikorrozionnye_sostavy_maslyanye_i_voskovye/">Масляные и восковые</a> </li> </ul> </li> </ul> </li> <li class="expanded "><a href="/catalog/industrialnye_plastichnye_smazki_antikorrozionnye_sostavy/?list=yes">Пластичные смазки и пасты</a> <ul> <li><a href="/catalog/industrialnye_plastichnye_smazki_smazki_obshchego_naznacheniya_do_120/">Смазки общего назначения, до 120в„ѓ</a> </li> <li><a href="/catalog/industrialnye_plastichnye_smazki_smazki_dlya_temperatur_gt_120_i_vysokikh_nagruzok/">Смазки для температур >120в„ѓ и высоких нагрузок</a> </li> <li><a href="/catalog/industrialnye_plastichnye_smazki_smazki_s_tverdymi_napolnitelyami/">Смазки с твердыми наполнителями</a> </li> <li><a href="/catalog/industrialnye_plastichnye_smazki_poluzhidkie_smazki_dlya_tsentralizovannykh_sistem_podachi_i_reduktorov/">Полужидкие смазки для централизованных систем подачи и редукторов</a> </li> <li><a href="/catalog/industrialnye_plastichnye_smazki_spetsialnye_smazki/">Специальные смазки</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_otkrytykh_zubchatykh_peredach/">Смазочные материалы для открытых зубчатых передач</a> </li> </ul> </li> <li class="expanded "><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti/?list=yes">Пищевые смазочные материалы Cassida</a> <ul> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_masla_dlya_tsepey/">Масла для цепей CASSIDA CHAIN OIL</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_gidravlicheskie_masla/">Гидравлические масла CASSIDA</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_reduktornye_masla/">Редукторные масла CASSIDA</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_kompressornye_masla/">Компрессорные масла CASSIDA</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_masla_teplonositeli/">Масла-теплоносители CASSIDA</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_plastichnye_smazki/">Пластичные смазки CASSIDA</a> </li> <li><a href="/catalog/smazochnye_materialy_dlya_pishchevoy_promyshlennosti_spetsialnye_zhidkosti/">Специальные жидкости CASSIDA</a> </li> </ul> </li> </ul> <!-- <input type="hidden" id="actv" value="active_1"/> --> <!-- --> </nav>
Решение задачи: «Не получается спарсить многоуровневое меню»
textual
Листинг программы
s = set(el.attr('href') for el in dom.find('ul > li > ul > li > a'))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д