Есть сайт руспрофиль.ру, делаю парсинг ФИО.
url = 'https://www.rusprofile.ru/codes/561010/'
fio = soup.select('.company-item > .company-item-info > dl > dd')
Дело в том, что не всегда количество тегов в каждом блоке равны. Где-то на один больше, где-то меньше.
В итоге, первая страница парсится хорошо, но среди результатов пару ошибок есть из-за кол-ва тегов.
Затем, программа открывает следующую страницу и вот уже там ошибок гораздо больше. Вместо нужных тегов вылезают совсем другие и в итоге каша.
Вывод для первой страницы делаю так:
for i in range(0, len, 5):
print(fio[i].text)
names.append(fio[i].text)
for j in range(5, len, 6):
print(fio[j].text)
names.append(fio[j].text)
Для первой страницы подходит на 98%, а вот когда страница меняется, то уже 2% попаданий)))
Есть ли более эффективный метод ловли нужных тегов?
Пример верстки сайта
<div class="company-item">
<div class="company-item__title">
<a href="/id/10612303"> ООО "Восток" </a>
</div>
<div class="company-item-info">
<dl>
<dt>Генеральный директор</dt>
<dd>Титаев Александр Витальевич</dd>
</dl>
</div>
<address class="company-item__text">
603005, Нижегородская область, город Нижний Новгород, улица Пискунова, дом 14/5, помещение 8
</address>
<div class="company-item-info">
<dl>
<dt>ИНН</dt>
<dd>5260430967</dd>
</dl>
<dl>
<dt>ОГРН</dt>
<dd>1165275042349</dd>
</dl>
<dl>
<dt>Дата регистрации</dt>
<dd>1 сентября 2016 г.</dd>
</dl>
<dl>
<dt>Уставный капитал</dt>
<dd>10 000 руб.</dd>
</dl>
</div>
<div class="company-item-info">
<dl>
<dt>Основной вид деятельности</dt>
<dd>56.10.1 Деятельность ресторанов и кафе с полным ресторанным обслуживанием, кафетериев, ресторанов быстрого питания и самообслуживания</dd>
</dl>
</div>
</div>
Резюмирую: нужно вытаскивать ФИО, количество тегов не всегда равны, иногда добавляются или убавляются какие-то теги. Поэтому, если обращаться по индексу, как в моем примере, то будет провал...