python: парсинг классов с изменяемым названием

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

Возникла проблема. Нужно парсить маршрутки с помощью bs4, все рейсы находятся в классах с названием "jss10":

Скриншот всех маршруток

Вот иерархия одного из jss10:

Иерархия jss10

После класса jss10 можно заметить классы 630, 631, 632 и т.д. Но, при каждом обновлении страницы эти классы будут по другому названы. В этом и проблема. Я не понимаю, как спарсить, допустим, время и дату рейса, когда классы постоянно разные.

Ответы

▲ 0
import requests
from bs4 import BeautifulSoup

url = 'https://www.atlasbus.by/Маршруты/Дятлово/Минск?date=2023-02-12'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
# a1, a2, *_ = soup.find(attrs={'class': 'jss10'}).strings
# print(a1, a2)

rrr = soup.find_all(attrs={'class': 'jss10'})
# print(rrr[0].prettify()) # в исходниках классы не меняются
for x in rrr:
    q1 = x.find(attrs={'class': 'jss185'}).text
    q2 = x.find(attrs={'class': 'jss186'}).text
    tt = x.find(attrs={'class': 'jss198'})
    q3 = 'Нет мест'
    if tt:
        q3 = tt.text
    print(q1, q2, q3)