과제/공지사항/성적/강의자료 카테고리 분류하기 - 속성값 이용
■ 카테고리 : 공지 사항, 성적, 과제, [ 프레젠테이션, 텍스트 문서, pdf ] = '강의자료'
[ 변수 ]
##전역변수 선언##
category_index=0 #속성값 추출할 때 사용할 category의 index
#●처음~soup = bs(response, 'html.parser')까지 코드 생략●#
##제공예정##
upc_cours=soup.select('.js-upcomingStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div>a')
upc_title=soup.select('.js-upcomingStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div.name>ng-switch>a')
##오늘##
td_cours=soup.select('.js-todayStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div>a')
td_title=soup.select('.js-todayStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div.name>ng-switch>a')
##최근항목##
pre_cours=soup.select('.js-previousStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div>a')
pre_title=soup.select('.js-previousStreamEntries.activity-group.columns.main-column>ul.activity-feed>li>div>div>div>div>div.name>ng-switch>a')
##카테고리 구분##
category=soup.select('svg[class="MuiSvgIconroot-0-2-37 makeStylesdirectionalIcon-0-2-36 makeStylesstrokeIcon-0-2-35 MuiSvgIconcolorPrimary-0-2-38 MuiSvgIconfontSizeLarge-0-2-45"]')
#aria-label의 속성값만 추출
for icon in category:
category[category_index]=icon['aria-label']
category_index+=1
print('<제공예정>')
for i in range(0,len(upc_cours)):
print(category[i])
print('\n<오늘>')
for i in range(len(upc_cours),len(upc_cours)+len(td_cours)):
print(category[i])
print('\n<최근항목>')
for i in range(len(upc_cours)+len(td_cours),len(upc_cours)+len(td_cours)+10):
print(category[i])
★ 카테고리 구분을 위해 각 스트림 내용 왼쪽의 icon을 활용할 것임!
icon만을 가져오는 클래스 : svg[class="MuiSvgIconroot-0-2-37 makeStylesdirectionalIcon-0-2-36 makeStylesstrokeIcon-0-2-35 MuiSvgIconcolorPrimary-0-2-38 MuiSvgIconfontSizeLarge-0-2-45"]
위의 태그와 클래스를 통해 icon에 해당하는 html 내용 다 가져오고 카테고리 내용만 추출하면 위에서부터 저장됨!
따라서, 제공예정/오늘/최근항목을 담은 리스트의 크기(len)를 구해서 인덱스로 매칭해주면 카테고리 구분 가능!
여기서 문제! icon에서는 태그 안에 문자열이 따로 없어서 구분할 내용을 text로 불러올 수가 없었음.
`
대신, svg[class="MuiSvgIcon ~"] 안에 aria-label이라는 속성에 속성값으로 카테고리 분류가 가능했다!(다행이다)
따라서, 태그 내의 속성값을 가져올 수 있는 방법이 필요했다.
category=soup.select('svg[class="MuiSvgIconroot-0-2-37 makeStylesdirectionalIcon-0-2-36 makeStylesstrokeIcon-0-2-35 MuiSvgIconcolorPrimary-0-2-38 MuiSvgIconfontSizeLarge-0-2-45"]')
#aria-label의 속성값만 추출
for icon in category:
category[category_index]=icon['aria-label']
category_index+=1