본문 바로가기
개발일지/제로베이스_데이터사이언티스트스쿨

[제로베이스] 2달차 EDA 데이터 크롤링 주유소 정보 후기 (멸망)

by 다니엘의 개발 이야기 2022. 6. 15.
320x100

아..... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

열심히 한다곤 했는데, 진짜 어느 순간부턴 눈 한쪽이 계속 떨리고 안경을 썼는데도 글씨가 잘 안보이더라;

아.. 심각하다 싶었지만 그것이상으로 심각한건 내 지금의 상황이다.

 

EDA 첫번째 과제때 너무 안일했다.

주제는 전국 주유소 정보 크롤링으로써

https://www.opinet.co.kr/searRgSelect.do

 

싼 주유소 찾기 오피넷

 

www.opinet.co.kr

해당 사이트를 이용해서 찾는것이였다.

완전히 답안으로 배낄 수 있는 몇몇 정보들이 있었고, 손쉽게 끝낼 수 있었다.

그게 내 실력과도 같이 느껴지기도 했다.

왜? 나는 잘 따라쳤으니깐.

 

근데 이번 과제주제를 받은 순간 머리가 멍했다. ㅋㅋㅋㅋㅋ

일단 페이지 접근에 정보가 있는 위치까지 가는건 ㅇㅋ. 수월하게 했다. 쉽게한건 아니지만

근데 문제는 정보를 찾고, 가공하는 과정이였다.

 

우선, 내가 어떤 객체를 클릭한다. 라는 상황이라면 사실 너무 쉽다 이제는. 그냥 xpath 복사하고, 그걸 토대로

select하고 끝내면 딱히 오류가 있을리도 없다.

하지만 진짜 중요하고, 문제가 되는 부분은 중요 정보를 감싸고 있는 메인태그, 그리고 그 메인태그로 부터 반복문을 사용한다 치지만, 어떻게 접근을 해서 어떻게 데이터를 추출하는지. 가공이전에 추출에서부터 너무 난관에 막혔다.

가공은 사실 추출을 잘해놓으면 크게 어렵지 않은 부분이라고 생각한다.

근데 추출이 넘사벽으로 어렵다.

지나가다 흘려들은것이지만 데이터 사이언스의 80% 이상의 업무는 데이터 추출하는데 쓴다고 하는데, 뭔말인지 알것같다;

이거 익숙해서 훤히 꿰차고 있으면 사실 어렵지 않게 술술 금방할 것도 같다.

근데 그 술술하는 경지에 이르기 까지 얼마나걸릴지?

심지어 오늘까지 과제로 진행했던 웹페이지는 친절하지가 않다.

 

보통은 제목은 title, 뭐 그런식으로 해서 나름의 정리가 되어있는데 내 시야에서는 완전 불친절 하드라.

정보도 중구난방으로 퍼져있고, 주유소의 이름, 주소등 주요 정보는 href안에 있는데 여기에 이틀썼다...

그럼에도 해결을 못했다.

 

가장 큰 문제는 <a href='a,b,c,d~~~~~g'>-1</a>

이런식으로 되어있을때 단순히 text상에 a,b,c,d~~~~~g가 있었다면 text가 되었든 get_text가 되었든 해결이 용이했을텐데

href= 안의 값을 어떻게 추출하는지 도무지 모르겠더라.

찾으면서 생각이 드는거지만, 추출을 한다 하더라도 그걸 어떻게 가공해서 사용해야할지. split()과 인덱스를 이용하면될지.

뭐 그런생각들을 했었다.

 

href안의 값은 이러했다.

javascript:fn_osPop('','2249','2027','2017','99999','','2022-06-15 17:48:20','2022-06-15 17:59:42','2022-06-15 17:59:49',' ','','305800.03010','493751.98150','- 유가보조금 지급(POS시스템설치)<br/>- 화물차 현장할인<br/>- 각종 현대정유 제휴카드 할인 및 적립','','- 주유소 영업시간 : 05시 ~ 23시<br/>- 세차장 운영시간 : 09시 ~ 19시<br/>  (계절 및 인력 여건에 따라 변동가능)<br/>- 최신식 터널 버블세차기<br/>  *주유금액 상관없이 버블세차<br/>  (승용-3,000원  SUV-4,000원 하부-1,000추가)','','- 롯데정밀 요소수판매<br/>- 현대프리미엄 첨가제판매<br/>- 현대에탄올 워셔액 판매<br/><br/>- 100% 정품!정량!좋은연비! <br/>* 믿고 주유할 수 있는 주유소<br/>* 경유 배달(전화문의) ',' ','N','N','HDO','이케이에너지(주) 평택주유소','현대오일뱅크','031-682-1448','경기 평택시 청북면 청원로 49','Y','N','N','','N','A0002949','5948501710','N','N','Y');

 

뭔가의 규칙이 분명 있을것이고 그걸 해결해내는게 관건일텐데, 정말 다시금 beautifulsoup, selenium을 기초부터 시작하면서 배워가고 다듬어가야겠다.

지금이야 풀리지가 않아도 해설강의를 기다리면 된다고 생각할 수 있겠지만 현업에 가봐라 이거 어떻게 해결할거냐 지금 이런거 안익숙해지면. 그럼 직종전환밖엔 답이없고 그러고싶진 않다. 지금보다 몸이 더 나빠지지 않는 이상은.

암튼 병원도 조만간 가봐야겠다.

 

결과적으로는 100점만점중 20점짜리 정도 답안을 제출했지만, 너무 만족스럽다.

왜냐하면 내 현실을 너무 잘 봤다.

오히려 구글링이나 유튜브로 쉽게 풀수 있었다면 뿌듯이야 하겠고 그에따라 나태해졌겠지만,

후 폭풍으로 풀리지 않는 그런게 오는것보단 지금 닥치는게 낮지.

그리고 뭘 해야할지도 너무 잘알겠다.

잘 모르는것을 메워가는 것이 내가 앞으로 할 일이다.

300x250