200311_TIL
11 Mar 2020 | TIL오늘 한 일
python
- 크롤링 프로그램 예외처리를 통해서 프로그램을 좀 더 유연하게 동작하도록 했다.
느낀 점
예외처리를 공부해야겠다.
내일 할일
- 패스트캠퍼스 강의 듣기
예외처리를 공부해야겠다.
lambda
나 함수를 넣어주면 max를 더 적극 활용할 수 있음을 느꼈다.all_dict = {'a':1, 'b':2}
max_key = max(all_dict, key=lambda k: all_dict[k])
print(all_dict[max_key])
람다의 인자로 all_dict의 키가 들어가서 all_dict의 value를 리턴하여 이 value들로 max값을 구할 수 있다.
역시 구글링의 힘은 대단하다. 영어 공부도 열심히 해서 더 다양한 자료를 찾을 수 있도록 해야겠다.
자기전에 기능 추가하고 자려했는데, 계속 오류가 나타나는 것이다. 무엇이 문제인지 계속 사태를 벌이다가 아주 허무하게 해결했는데, 한 메소드가 오타낸 것이었다… select라 할 것을 seclet로 했던 것이다.
딕셔너리와 enumerate를 같이 쓸 때는 튜플로 묶어줘야 한다.
for num, (key, item) in enumerate(딕셔너리.items()):
print(num, key, item)
오타가 안나도록 꼼꼼히 봐야겠다.
예외 처리에 대해 공부하기
오늘부터 TIL도 약간 상세히 적어봐야겠다.
어제 requests
와 Beautifulsoup
을 가지고 크롤링을 프로그래밍을 하고 있었다. 근데 이상하게도 분명 html 소스코드도 잘 갖고 오는데, Beautifulsoup으로 selector를 이용해 테이블 내용을 추출하면 이상하게 원하는 값이 안나왔다. 내가 잘못한 것인가 하고 여러 삽질을 해봤으나, 결과는 계속 같았다.
그렇게 개발자 도구의 Element탭과 원래 웹 페이지 소스를 비교하던 중 차이점을 알게됐는데, <tr>
태그가 닫히고 나서도 바로 밑에 닫힌 </tr>
태그가 하나 더 있던 것이다. 아마 검색을 더 해봐야겠지만, 내 크롬에서는 짝인 없는 태그는 삭제되는거 같다.
그래서 requests만으로는 해결이 될거 같지 않아 selenium
과 chromewebdriver
을 통해 크롬 Element탭과 동일한 소스를 갖고올 수 있다 하여 사용했고, 성공했다! 약간의 부하는 더 생기겠지만, 이게 현재로선 최선인거 같다.
현재 Pycharm을 사용하고 있는데, 파일 추가할 때마다 git add할지 묻는데, 실수로 했던 파일이 있었는지, 같이 commit 될뻔했다. 참고 블로그
확실히 이론으로만 공부하다가 내가 삽질해가면서 찾아가는게, 효과가 아주 좋은거 같다. 비록 시간은 많이 걸리지만 성취감은 좋다.
git에 대해 공부해봐야겠다.