python: парсинг классов с изменяемым названием
Возникла проблема. Нужно парсить маршрутки с помощью bs4, все рейсы находятся в классах с названием "jss10":
Вот иерархия одного из jss10:
После класса jss10 можно заметить классы 630, 631, 632 и т.д. Но, при каждом обновлении страницы эти классы будут по другому названы. В этом и проблема. Я не понимаю, как спарсить, допустим, время и дату рейса, когда классы постоянно разные.
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
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)

