@Lim_Drake

Возможно ли извлечь информацию из блоков, объединенных одним классом, при парсинге сайта?

Здравствуйте! Я хочу написать парсер сайта Циан (https://cian.ru/), пишу на Python, использую BeautifulSoup.
Столкнулся с такой проблемой, что под одним классом, в нескольких блоках лежит нужная мне информация( прикладываю скрин, если я неверно сформулировал проблему)
5fa80e9b75657911751534.png
Используя селектор по данному классу:
address_block = item.select_one('div._93444fe79c--labels--1J6M3')

Получаю подобные результаты:
<div class="_93444fe79c--labels--1J6M3">
<a class="_93444fe79c--link--10mjQ" data-name="GeoLabel" href="https://saransk.cian.ru/kupit-kvartiru-mordoviya/" target="_blank">Республика Мордовия</a>, 
<a class="_93444fe79c--link--10mjQ" data-name="GeoLabel" href="https://saransk.cian.ru/kupit-kvartiru/" target="_blank">Саранск</a>, 
<a class="_93444fe79c--link--10mjQ" data-name="GeoLabel" href="https://saransk.cian.ru/kupit-kvartiru-mordoviya-saransk-oktyabrskiy-044297/" target="_blank">р-н Октябрьский</a>, 
<a class="_93444fe79c--link--10mjQ" data-name="GeoLabel" href="https://saransk.cian.ru/kupit-kvartiru-mordoviya-saransk-volgogradskaya-ulica-0231169/" target="_blank">Волгоградская улица</a>, 
<a class="_93444fe79c--link--10mjQ" data-name="GeoLabel" href="/cat.php?deal_type=sale&amp;engine_version=2&amp;house%5B0%5D=2192661&amp;offer_type=flat" target="_blank">124</a></div>

Если же я использую селектор по классу под тэгом 'a', то я получаю только информацию 1 блока с таким классом(Я получу только данную строку: 'Республика Мордовия')
Возможно ли обработать это, чтобы я получил полную информацию адреса?
P.S. Прошу сильно не бить, я только начинаю изучать эту область. Также прошу прощения, если мой вопрос некорректен!
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
@Lim_Drake Автор вопроса
Решение предоставил Евгений Палыч чуть выше в комментариях к посту
address_block = item.select_one('div._93444fe79c--labels--1J6M3')
print(address_block.get_text(" "))

# для всех div на странице с классом _93444fe79c--labels--1J6M3
address_blocks = item.select('div._93444fe79c--labels--1J6M3')

for e in address_blocks:
  print(e.get_text(" "))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Посмотрите документацию BeautifulSoup там много примеров.
Ответ написан
Privetiq
@Privetiq
Тестирую всегда на проде
Не шарю питон и эту либу, но попробую предположить:
address_block = item.select_one('div._93444fe79c--labels--1J6M3 a')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы