본문 바로가기

프로그래밍/Ming프로젝트 일기

20.03.29 백준에서 풀었던 문제들 깃 허브에 자동 추가

 처음으로 과제라던가 공모전이 아닌 나 스스로 필요한 프로그램을 만드는 프로젝트를 진행했다.

 물론 파이썬과 크롤링에 대해 공부하기 위해 시작한 것은 맞지만 강제성이 없고 내 편의를 위한 개발은 

코딩하는 내내 즐거웠다. 파이썬과 크롤링에 덤으로 깃 허브에 대한 이해도도 증가했으니 굉장히 만족스러운

프로젝트 였다. 그리고 처음으로 C, C++로 개발하지 않은 프로젝트이다. 그래도 난 C가 편해...

 물론 파이썬의 정말 맛보기 수준이였고, 크롤링api도 하나씩 찾아보면서 코딩했지만 주변 친구들이 크롤링으로 

신기한 프로그램들을 만드는게 신기했는데, 역시 노가다를 열심히 하면 별로 어렵지 않구나 라는걸 깨달았다.

 백준사이트같은 경우에는 프로그램에의한 로그인이 리캡챠로 막혀있어서 살짝 고민했지만 '역시 컴퓨터가 못하는 건

사람이 하면 되지!' 라는 마인드로 로그인은 직접하도록 만들었다. (나름의 편의성도 추가했고 보안도 더 좋아진거아닌가?ㅎ)

그리고 이 과정에서 추가하고싶지 않았던 셀레니움이라는 api가 추가 되었다.

 본 프로젝트는 파이썬api인 BeatifulSoup과 Selenium이라는 두 가지 api를 이용하여 진행했다. 

(웹사이트 html 받아오는 requests도 사용하긴 했다)

 BeautifulSoup은 웹 사이트의 html을 파싱해주는 역할을 하고 Selenium은 크롬드라이버를 컨트롤역할을 한다.

사실 BeatifulSoup이 html을 전부 파싱해주기 때문에 나는 필요한 내용이 어디에 있는지 어떤 태그로 갖고있는지만 

눈알 빠지게 찾으면 된다. 그렇게 맞은 코드를 찾아서 임시파일 하나에 입력하기만 하면 끝! 그리고 그 파일을 깃 허브에 

계속 추가만 하면 되기때문에 사실상 api가 다하는 셈이다. 물론 api가 안해도 노가다 수준이지만 ㅎ

그리고 웹 사이트를 갱신할때마다 0.5초의 html을 받아오는 여유시간을 줬는데 이것때문에 좀 오래 걸리는 경향이 있는 것같다.

만약 저 api가 웹사이트를 다 받아올 때까지 기다려주는 것이라면 필요없을 것도 같은데.. 내부를 잘 몰라서 좀 더 찾아봐야 할것같다.

 본 프로젝트는 이미 제출해서 맞은 문제들을 대상으로 깃 허브에 푸시하는 프로젝트였으니까, 새로운 프로젝트는 문제를 제출 할때마다

새로운 문제가 ac를 받는다면 깃 허브에 푸쉬하는 프로젝트를 해보려고 한다.

https://github.com/MingNine9999/algorithm/blob/master/bojTOgit.py

 

MingNine9999/algorithm

Contribute to MingNine9999/algorithm development by creating an account on GitHub.

github.com

-20.03.29