Форум сайта python.su
2
Добрый день. Пишу парсер на python 3.8, requests, BeautifulSoup.
фрагмент 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>
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)
Офлайн
124
может так?
<div class=“class-tail class-even-week”>
elif p.get('class') == "class-tail class-even-week"
Офлайн
2
xam1816так тоже пробовал) не работает
может так?<div class=“class-tail class-even-week”>
Офлайн
124
<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>
for p in pair.find_all('div', class_='class-tail'):
class_tails = i.find_all('div', class_='class-tails') for pair in class_tails: # время начала пары time_ = pair.find('div', class_='class-time').text # должен быть в class_tails week = pair.find('div', class_='class-tail class-even-week')
Офлайн
857
robishoОпиши задачу точно. Что должен сделать парсер в результате?
Пишу парсер
Офлайн
186
> так тоже пробовал) не работает
"class-all-week" in p.attrs.get("class", [])
Офлайн