학교 공지 사항 자동화를 해보자 - 2
Intro. 학과 공지 사항에서 데이터 추출 해보자
위와 같이 리스트 형태로 공지를 뿌리고 있음을 확인했다.
먼저 개발자 도구를 켜서 CSS 셀렉터를 추출해서, 리스트의 위치를 특정해야 한다
tr 태그 내에 notice 클래스 안에 공지들이 들어 있음을 볼 수 있다
오른쪽 마우스 클릭을 해서 css 셀렉터를 추출한다
코드
import requests
import re
from bs4 import BeautifulSoup
from datetime import datetime
# 웹페이지에서 데이터를 가져올 URL
url = 'https://sw.jnu.ac.kr/sw/8250/subview.do'
today = str(datetime.now().date())
today.replace("-",".")
def getTodaySojoong():
post = []
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for tr in soup.findAll('tr', attrs={'class':'notice'}):
tds = tr.findAll('td')
date = re.search(r'">(.*?)</td>',str(tds[3])).group(1)
if date != today:
break
text = tds[1]
title = re.search(r'<strong>(.*?)</strong>', str(text)).group(1)
href = re.search(r'<a\s.*?href=[\'"]?([^\'" >]+)',str(text)).group(1)
postUrl = "https://sw.jnu.ac.kr/"+href
post.append([title,postUrl])
print(f"Adding… {date} : {title}")
return post
- tr 태그의 내용물을 모두 가지고 와서, 정규식으로 날짜, 제목, 링크를 추출한다.
- tr > td 태그의 데이터를 추출하려고 봤더니 문자열처럼 한 뭉텅이로 있어서 정규식으로 데이터를 추출하였다
- 추출한 공지들을 post 리스트에 추가해서 반환한다
레퍼런스
'프로젝트 > 사이드 프로젝트' 카테고리의 다른 글
BlindTok (1) - 프로젝트 초기 세팅 (0) | 2023.03.29 |
---|---|
학교 공지 사항 자동화를 해보자 - 5 (0) | 2023.03.23 |
학교 공지 사항 자동화를 해보자 - 4 (0) | 2023.03.22 |
학교 공지 사항 자동화를 해보자 - 3 (0) | 2023.03.22 |
학교 공지 사항 자동화를 해보자 - 1 (0) | 2023.03.22 |