일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 강의
- 자작시
- 알고리즘
- 머신러닝
- 프로그래밍
- 강좌
- 라즈베리파이3
- it
- 2021
- 라즈베리파이 모니터
- python 강의
- 백준
- 다이나믹프로그래밍
- python 강좌
- BOJ
- 파이썬 강의
- dynamic programming
- C++
- 계획
- mmcv
- 공부
- 라즈베리파이
- 2020
- 철학
- 파이썬 강좌
- python
- 슬픔
- dp
- 파이썬
- mmdetection
Archives
- Today
- Total
Stargazer
[파이썬] 기숙사 급식표 다운로드 프로그램 만들기 본문
반응형
우리학교 기숙사 홈페이지가 새로 바뀌게 되면서
이전에 쓰던 프로그램이 쓸모 없어졌다.
사실 이전에도 한번 개정한적 있었는데, 그때는 자바스크립트 형식으로 다운받는 형식이라 웹 스크레이핑 하는 프로그램을 하나의 파일로 만들 방법을 못찾아서 관뒀는데
이번에는 실험해보니 가능해졌다.
첨부파일
물론 파이썬으로 만들었기 때문에 모바일에서는 실행이 어려워서 첨부터 컴퓨터용으로 만들었다.
덤으로 코드도 올릴테니 참고할 사람은 참고하는것도 좋을 것이다.
코드:
import requests
from bs4 import BeautifulSoup
import os
import datetime
base = "https://dorm.inha.ac.kr"
url = "https://dorm.inha.ac.kr/dorm/10136/subview.do?enc=Zm5jdDF8QEB8JTJGYmJzJTJGZG9ybSUyRjI1MzMlMkZhcnRjbExpc3QuZG8lM0Y%3D"
response = requests.get(url)
if response.status_code == 200:
# 요청 성공
html = response.text
soup = BeautifulSoup(html, 'html.parser')
table = soup.select_one('table.artclTable')
links = table.select('table > tbody> tr> td > a') # 접속링크
#날짜 확인후 접속
temp=[]
date=[]
now = datetime.datetime.now()
for i in range(2): #최상위 2개 추출
temp = list(map( int, links[i].text.strip().split('.')[:3]))
date.append(datetime.datetime(temp[0],temp[1],temp[2], 0,0,0,0)) #데이트 변수로 변환
delta = now - date[0] # 최신꺼와 비교
if delta.days < 0: # 다음주꺼라면
if now.weekday() == 6 and now.hour >= 7 and now.minute >= 30: #일요일 7:30 분 이후면 다음주
recent = links[0].attrs['href']
else:
recent = links[1].attrs['href'] #아니면 이번주꺼
else:
recent = links[0].attrs['href'] #아니면 앞에꺼가 이번주
#선택 날짜 급식표 보드 접속
rurl = base + recent
recent_page = requests.get(rurl)
board = recent_page.text
soups = BeautifulSoup(board, 'html.parser')
files = soups.select('body > div > div.artclItem.viewForm > dl > dd > ul > li > a')
#한글 파일 인지 확인
for file in files:
if '한글' in file.text:
filelink = file.attrs['href']
filename = file.text.strip()
break
# 다운로드 파일 다운로드
downlink = base + filelink
file = requests.get(downlink)
f = open(filename, 'wb')
for chunk in file.iter_content(100000):
f.write(chunk)
f.close()
#파일 실행
os.startfile(filename)
else :
print(response.status_code)
(22.3.31 ver.1.1)
영문이랑 한글 순서 바뀌면 영문으로 다운받아지는 현상 수정
다음주 급식표 미리 올라오는 경우 대비하여, 날짜 계산 추가(일요일 19:30 이후부터 다음주 급식표 다운로드)
(22.4.4 ver.1.2)
시간오류 발생으로 인한 저번주 급식표 다운 오류 해소
↓공감과 덧글은 큰 힘이 됩니다!
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬] visual studio 캐쉬(?) 삭제 하기 - 디스크 용량 늘리기 (0) | 2022.08.16 |
---|---|
[파이썬/주식] python 네이버 시세 정보 크롤링 안됨 현상 해결방법 (16) | 2021.01.28 |
[Python] 모두가 쉬운 파이썬 - 제어문 (0) | 2021.01.11 |
[Python] 모두가 쉬운 파이썬 - 연산자 (0) | 2021.01.07 |
[Python] 모두가 쉬운 파이썬 - 함수 (0) | 2021.01.06 |
Comments