지난번에 강의목록 가져오기 이후 강의계획서 가져오기와 공지사항 가져오기까지 구현에 성공했다. 사실 강의계획서 가져오는데 성공하자 어차피 나머지도 html 파싱해서 가져오는 것인만큼 '다 비슷하겠지~' 라고 생각하며 안심하고 협곡에 몇번 방문했었는데, 막상 공지사항 구현은 접속 구조가 약간 다르게 이루어져 있어 좀 더 시간이 걸렸다.
일단 강의목록을 가져오기까지 된 후로 좀 더 본격적이 되면서 리팩토링을 수행했다. 어디서 봤는데 파일 구조 신경 쓸 시간에 빨리 개발하는게 이득라고 하던데 나는 정리 안되고 마구잡이로 리스팅 되어있는거 보면 좀 스트레스 받는 편이라 그냥 처음부터 파일구조를 대충이나마 잡고 가는 편을 선호한다. 그래서 메인 실행파일과 config 파일, Session 파일은 최상위 디렉터리에 두고 menu_handler 폴더를 만들어 그 안에서 세부 기능들이 구현되도록 했다.
강의계획서를 가져오는 기능은 plan_handler.py 파일에서 맡는다. 지금 딱 든 생각이 Syllabus 라는 강의계획서를 가리키는 좋은 용어가 있는데 그때는 생각이 안나서 plan으로 한게 살짝 후회되지만.. 그거야 뭐 나중에 리팩터링하면 그만이니.

근데 코드 내용이 별게 없다 사실. 알맞는 주소에다가 리퀘스트 보내서 html 받아오고 BeautifulSoup 라이브러리 가져와서 가져온거 적절히 파싱하고 변수에 저장한다음 출력하는게 전부다. (원래 웹 스크래핑이 그런건가..?)
공지사항 가져오는건 강의계획서 가져오는것 보다는 좀 더 까다로웠다. 왜냐하면 강의계획서는 그 페이지안에 모든 정보가 있어 그냥 긁어오면 그만이었는데, 공지사항은 일단 목록을 띄워주고, 해당 목록에서 들어가야 공지 세부내용이 나오기 때문. 근데 목록을 띄우는 파일을 요청해서 받았는데, 거기에는 또 제목이나 작성일자 이런 세부 값이 나오지 않아서 당황스러웠다. 홈페이지에서 F12로 소스 뒤져가며 어디로 들어가는지 분석하면서 요청 주소 수정하고, 또 들어가는 데이터 수정하고 삽질 좀 한 끝에 결국 원하는 대로 받을 수 있었다.

과목을 선택해서 세부 메뉴 창을 띄우고,

2번을 선택해 공지사항 목록을 띄운다. 그러면 공지사항의 제목, 작성자, 게시일, 조회수가 뜬다. (교수님 제가 유명하게 해드릴게요) 지금보니 작성일의 역순으로 되어있다. 아무래도 오래된 공지사항이 아래로 가다보니 그렇게 된거 같은데, 수정해야겠다.

그리고 열람하고 싶은 공지사항을 선택하면 위 사진과 같이 세부 내용이 출력이 된다.
사실 아직까지 삽질을 그닥 안해서 그런지 쓸 내용도 별로 없다. 이제 웹 스크래핑 쪽에서 가져올 거는 강의자료, 온라인 강의, 출석 정보 등인데, 그 전에 Notion이랑 연동해서 가져온 정보를 Notion 데이터베이스에 올리는 작업을 진행해보고자 한다. 벌써 재밌을거 같다.