Blackboard WebCrawling 과정
1) 블랙보드 로그인 구현
2) 블랙보드 활동스트림 html 불러오기
3) 활동스트림 내용 가져오기
--(1) 제공예정/오늘/최근항목 구분해서 가져오기
--(2) 성적 가져오기
- 성적 / 만점성적 으로 가져오기
- GUI 짤 때 활용도 높이기 위해 성적, 만점성적, 합친성적 세 개의 리스트로 따로 담기
--(3) 카테고리 구분하기
- 해당 스트림 내용이 '과제, 공지사항,강의자료, 성적 중에 무엇인지
- 스트림 내용 카테고리 별로 구분해서 넣은 리스트 생성
4) 공지사항 따로 불러오기
- 스트림 내용으로는 공지사항이 짤리기 때문에 따로 들어가서 원문 불러오기
5) 슬랙 이용해 모바일 알람주기
- 과제 마감 x시간 전에 슬랙봇으로 알람주기
- 단, x시간 전 알람은 한 번만 주도록 한다
- x시간 설정이 여러 개 일 수 있다. (사용자가 2시간 전, 1시간 전으로 두 개 정했다면 2시간 전에 한 번, 1시간 전에 한 번 알람을 주도록 한다)
전체 구상
● 변수이름
- user_id : ID
- user_pw : PW
- login_stop : 로그인 예외처리 할 때 (while반복문에) 사용할 변수
- category_index : 속성값 추출할 때 사용할 category의 index
[ 제공예정 ]
- upc
- upc_cours (list) : 제공예정 코스 이름
- upc_title (list) : 제공예정 타이틀 내용
[ 오늘 ]
- td
- td_cours (list) : 오늘 코스 이름
- td_title (list) : 오늘 타이틀 내용
[ 최근 항목 ]
- pre
- pre_cours (list) : 최근항목 코스 이름
- pre_title (list) : 최근항목 타이틀 내용
[ 카테고리 ]
- category (list) : 카테고리 (공지 사항, 성적, 과제, [ 프레젠테이션, 텍스트 문서, pdf ] = '강의자료‘)
[ 성적 ]
- my_score (list) : 내 성적
- max_score (list) : 만점 성적
- score (list) : 내 성적 / 만점 성적
[ GUI카테고리 ] - 모든 변수 list
(GUI카테고리)_cours/title: 코스이름과 타이틀 내용 따로 담아서 가져올 것임
- Notice_cours/title : 공지사항
- Score_cours/title : 성적
- Document_cours/title : 강의자료
- Ass_cours/title : 과제 전체 (추가 + 마감예정)
- AddAss_cours/title : 추가된 과제 (과제 추가됨 스트림)
- DeadlineAss_cours/title : 마감예정과제
[ 마감기한 ]
● 성적
for i in range(0,len([성적카테고리 리스트]):
성적카테고리리스트[i]+=성적리스트[i]
내 성적 : span[class="grade-input-display ready"]
만점 성적 : span[class="points-text"]
“내 성적 / 만점 성적” <= 이렇게 스트링으로 합치기
=>
성적리스트=[]
for i in range(0,len(내 성적 리스트)):
성적리스트[i]=내 성적[i]+만점성적[i] #이미 만점성적에 ‘/’ 존재
● category 구분
1) 속성값 추출
2) 제공 예정 제외 오늘, 최근항목 속성값 알아야함
3) 오늘, 최근항목의 요소들 과제/공지사항/강의자료/성적 으로 구분
카테고리 : 공지 사항, 성적, 과제, [ 프레젠테이션, 텍스트 문서, pdf, 여러 문서 ] = '강의자료‘
● deadline(마감기한)
1) class="content"의 하위태그들로 마감기한 전체 불러옴
2) [마감예정과제]리스트에 순서대로 매칭시키면 됨
● GUI카테고리 구분
GUI에 들어갈 카테고리 구분
공지사항 / 성적 / 마감예정과제 / 과제 / 강의자료 (마감예정과제 / 과제 는 다른 카테고리)
- '제공예정'의 스트림은 전부 [마감예정과제]리스트로 가고
- '오늘'의 스트림 중 마감예정과제가 있다면 [마감예정과제]리스트로 가고
- '오늘'과 '최근항목'을 통틀어서 카테고리 분류를 해줘야함
category는 활동스트림의 처음 icon부터 끝까지 불러온 내용임
-> len(upc_cours) 개수만큼의 category 인덱스내용은 배제시키고 ('제공예정' 카테고리니까) 그 이후 인덱스부터 분류에 들어가야함
-> 이때, [마감예정과제]와 [과제]는 다른 리스트라고 했으므로! '오늘'에서 마감예정과제 스트림을 찾아 걔는 [마감예정과제]로 가는 예외를 고려해주고
-> 나머지는 category별로 잘 분류해서 GUI카테고리 리스트에 적절히 넣는다.