Добрый день. Пишу парсер на python 3.8, requests, BeautifulSoup.
фрагмент html кода страницы
отрывок кода парсера
в консоли получаю
не работает только участок кода, где должно определяться и выводиться на печать вид недели(четная, нечетная, общая). пробовал по-всякому, p.has_attr, p.attrs.get, другие варианты, что нагуглил - не работает этот кусок кода. ткните, плз, носом, где я проношу? спасибо.
фрагмент html кода страницы
HTML:
<h3 class="day-heading">пятница, 23 октября </h3><div class="class-lines">
<div class="class-line-item">
<div class="class-tails">
<div class="class-time">10:00</div>
<div class="class-tail class-even-week">
<div class="class-pred">Физика</div>
<div class="class-aud">Б209</div>
<div class="class-info">( Лаб. раб., подгруппа 1 )</div>
<div class="class-info"><a href="?prep=1513">Липовченко Е.Л.</a></div>
</div>
<div class="class-tail class-even-week">
<div class="class-pred">Физика</div>
<div class="class-aud">Б209</div>
<div class="class-info">( Лаб. раб., подгруппа 2 )</div>
<div class="class-info"><a href="?prep=1513">Липовченко Е.Л.</a></div>
</div>
<div class="week-delimeter"></div>
<div class="class-tail class-odd-week">свободно</div>
</div>
</div>
<div class="class-line-item">
<div class="class-tails">
<div class="class-time">11:45</div>
<div class="class-tail class-all-week">
<div class="class-pred">Математика</div>
<div class="class-aud">Ж311</div>
<div class="class-info">( Практ., )</div>
<div class="class-info"><a href="?prep=1242">Тренева Г.А.</a></div>
</div>
</div>
</div>
<div class="class-line-item">
<div class="class-tails">
<div class="class-time">13:45</div>
<div class="class-tail class-all-week">
<div class="class-pred">Иностранный язык</div>
<div class="class-aud"></div>
<div class="class-info">( Практ., подгруппа 1 )</div>
<div class="class-info"><a href="?prep=None"></a></div>
</div>
<div class="class-tail class-all-week">
<div class="class-pred">Иностранный язык</div>
<div class="class-aud"></div>
<div class="class-info">( Практ., подгруппа 2 )</div>
<div class="class-info"><a href="?prep="></a></div>
</div>
</div>
</div>
<div class="class-line-item">
<div class="class-tails">
<div class="class-time">15:30</div>
<div class="class-tail class-even-week">свободно</div>
<div class="week-delimeter"></div>
<div class="class-tail class-odd-week">
<div class="class-pred">Химия</div>
<div class="class-aud">Д207</div>
<div class="class-info">( Практ., )</div>
<div class="class-info"><a href="?prep=1784">Пожидаев Ю.Н.</a></div>
отрывок кода парсера
Python:
class_lines = main_div.find_all('div', class_='class-lines')
for i in class_lines:
day = i.previous_element
print('**********************\n')
print(day)
class_tails = i.find_all('div', class_='class-tails')
for pair in class_tails:
# время начала пары
time_ = pair.find('div', class_='class-time').text
print(time_)
for p in pair.find_all('div', class_='class-tail'):
if p.get('class') == 'class-all-week':
print('Общая неделя')
elif p.get('class') == 'class-even-week':
print('Четная неделя')
elif p.get('class') == 'class-odd-week':
print('Нечетная неделя')
if p.text == 'свободно':
data = ('Время свободно')
else:
# предмет
subject = p.find('div', class_='class-pred').text
# аудитория
room = p.find('div', class_='class-aud').text
# лекция/практика
variant = p.find_all('div', class_='class-info')[0].text
# препод
coach = p.find_all('div', class_='class-info')[-1].find('a').text
data = (subject, room, variant, coach)
print(*data)
в консоли получаю
Код:
**********************
пятница, 23 октября
10:00
Физика Б209 ( Лаб. раб., подгруппа 1 ) Липовченко Е.Л.
Физика Б209 ( Лаб. раб., подгруппа 2 ) Липовченко Е.Л.
В р е м я с в о б о д н о
11:45
Математика Ж311 ( Практ., ) Тренева Г.А.
13:45
Иностранный язык ( Практ., подгруппа 1 )
Иностранный язык ( Практ., подгруппа 2 )
15:30
В р е м я с в о б о д н о
Химия Д207 ( Практ., ) Пожидаев Ю.Н.
не работает только участок кода, где должно определяться и выводиться на печать вид недели(четная, нечетная, общая). пробовал по-всякому, p.has_attr, p.attrs.get, другие варианты, что нагуглил - не работает этот кусок кода. ткните, плз, носом, где я проношу? спасибо.