알고리즘 문제해결 사이트(Programmers
, CodeUp
) 자동화
- python 3.6 ⬆
requests
,bs4
,lxml
필요 모듈 설치 방법:
pip install -r requirements.txt
python -m programmers 또는 python -m codeup
crawler-algorithm-problem
│
├─ apps
│ ├─ codeup : solved_problem.py / submit.py(예정)
│ └─ programmers : to_solved_problem.py
│
├─ controllers : 각 사이트에 대한 컨트롤러 클래스
│
├─ modules : 파일 처리, 언어 선택, 사용자 입력 관련 모듈
│
├─ _downloads : 가져온 문제 파일 디렉토리
│ │
│ ├─ codeup
│ │ ├─ all : 모든 문제
│ │ ├─ problemset : 선택한 문제집
│ │ └─ problem_id : 입력한 문제번호
│ │
│ └─ programmers
│ └─ python3 : 선택한 언어
│ ├─ level1
│ ├─ level2
│ ├─ level3
│ ├─ level4
│ └─ level5
└─ _jsons : 로그인 정보 등 기본값 설정 파일
알고리즘 문제해결 사이트에서 해결할 문제의 양식
또는 앞으로 해결한 문제의 제출 코드을 가져와서 파일로 저장
- 언어 선택 (우선 기본적인 언어를 'python3'으로 설정 -> 추후에 다른 언어에 관한 코드 구현할 것)
- 선택한 언어에 대한 모든 문제 크롤링
이전 방식은
Selenium
을 이용하였음.
속도가 느리다는 단점이 있는Selenium
사용 대신
requests
모듈의session()
함수를 이용하여 로그인 세션을 얻는 방식으로 속도 개선
- 사이트 로그인
- 3 가지 방식의 함수 구현
- 문제집 선택 -> 선택한 문제집에서 해결한 문제의 제출 코드 가져오기
- 문제번호 입력 -> 입력한 문제의 제출 코드 가져오기
- 해결한 모든 문제 가져오기(이미 저장되어 있는 문제는 제외)
- 가져온 파일로 저장