Моя цель в этой части — поделиться частью моего процесса в этом проекте веб-скребка, который на данный момент завершен. Я решил создать этот веб-скрейпер, потому что хотел создать расписание занятий в Календаре Google на предстоящий зимний семестр, но на портале моей школы не было простой кнопки экспортировать в GCal.

Я начал с простого перечисления некоторых высокоуровневых шагов, которые должна предпринять эта программа:

  1. Получить курсы с веб-сайта. (На тот момент я еще не решил, буду ли я копировать из Atlas или Wolverine Access. Подробнее об этом позже.)
  2. Запишите курсы в файл ics с правильным форматированием
  3. Экспорт файла .ics

Я знал, что хочу использовать Python, потому что это то, что я использовал в прошлом для другого веб-скребка. Затем мне пришлось принять некоторые решения:

Вычитать из Atlas или Wolverine Access?

Я пошел с Атласом, в основном из-за личной необходимости. В отличие от Wolverine Access, в расписание можно добавить курсы, на которые я технически не зарегистрирован, но планирую их посещать, например, ENTR 407 — Час предпринимательства.

Используете Selenium или Beautiful Soup?

Из этой статьи я узнал, что Beautiful Soup по сути ограничен извлечением данных из статических страниц, тогда как Selenium поддерживает взаимодействие с динамическими страницами и контентом. Беглый осмотр Atlas показал, что Atlas динамически подгружает элементы страницы, и этого мне хватило, чтобы выбрать Selenium.

Я узнал о многих различных технологиях, поэтому я просто перечислю некоторые из них здесь:

Одно из препятствий в этом проекте связано с тем, что библиотека ics не поддерживала повторяющиеся события, но я смог вручную добавить Правило повторения в формате ics к событиям через атрибут .extra, предоставленный ics.

В конце концов, я проработал около двенадцати часов, работая над этим проектом, что, я полагаю, казалось дольше, чем было на самом деле. В какой-то момент я понял, что было бы намного быстрее вручную вносить эти события в свой Календарь Google. Но я надеюсь, что это сэкономит время в следующие шесть раз, когда мне придется это делать, и, возможно, другие студенты сочтут этот скребок полезным.

Если вам интересно, вы можете найти мой проект на GitHub.