티스토리 뷰

밥대생 팀이 어떻게 400여개 캠퍼스의 식단 정보를

수집할 수 있었는지 소개해드리고자 합니다. 

밥대생 팀은 크게 두 가지 방법을 통해 식단 정보를 수집해내고 있습니다.

1. 웹페이지에 올라온 식단 정보를 크롤링해서 수집

2. 각 학교 영양사님들께서 직접 우리 어드민 페이지에 식단 정보를 업로드 


밥대생 초기에는 1번 방식으로만 식단 정보를 수집했었습니다.

하지만, 밥대생 서비스 규모가 점차 커짐에 따라

2번과 같이 저희 서비스에 직접 

식단정보를 올려주시는 식당들이 점차 늘어나고 있습니다.

이렇게 2017년 4월 9일 기준 약 10여개의 학교에서 

저희 시스템에 직접 식단정보를 업로드해주고 계십니다.

올해 안에 이런 업체들을 점차 늘려, 

많은 학교들을 2번 방식으로 전환할 예정입니다. 


이제 1번 방식에 대해 좀 더 자세히 설명드리고자 합니다. 

극 초기 밥대생은 학식 정보를 HTML로부터 TEXT 형태로 추출해 냈습니다.

이 때, Python library BeautifulSoup를 적극 활용했고요.

이 라이브러리를 활용하면 HTML에 식단 정보가 담겨있는 경우 

TEXT 형태로 정보를 비교적 쉽게 추출해 낼 수 있습니다.


이렇게 학교 하나씩 확장해나가던 중에, 

식단 정보를 이미지나 PDF, PPT, EXCEL과 같은 형태로 올려주는 학교들이 꽤 많음을 알 수 있었습니다. 

전체 학교 중 절반 이상이 이미지, PDF, PPT, EXCEL 형태로 올려주고 계신 것으로 파악하고 있습니다. 


가장 좋은 것은 PDF, PPT, EXCEL에서 텍스트를 추출하는 것입니다. 

하지만, 개발력이 부족했던 초창기에는 이런 형태에서 TEXT 형태로 식단정보를 추출해내는 것은 

매우 힘든 작업이었습니다.

그래서, 처음에는 이런학교들을 사람이 직접 하나하나 입력했습니다.
운영팀에서 해당 작업들을 처리해냈었고요! ㅜㅜㅜ 

그러다보니, 확장성에 의문이 있었습니다.
이렇게 입력해서는 확장할 수 없다는 나름의 결론을 내렸습니다.
식단정보의 특성 상 주에 한번씩은 입력해줘야 하는데,
이를 위해서는 타이핑 하는 인력이 상당히 많이 필요하다는 결론을 내렸습니다. 

그래서 이를 자동화하기 위한 설계에 들어갔습니다.
일단 EXCEL은 CSV 형식으로 추출하여 파싱을 시도했습니다.
어느정도 가능해 보였고, 이를 위한 작업도 마쳤습니다.
(더 정확히는 xlrd와 같은 모듈을 사용했습니다. xls와 xlsx는 다른 라이브러리를 활용합니다.)

다음 타겟은 이미지였습니다. 
하지만, 이미지는 변환할 방법이 없었습니다.
명함입력 서비스 리멤버의 경우도 사람이 명함 이미지를 보고 직접 타이핑해줍니다.
한글 OCR기술이 실 서비스에
활용하기 부족한 정확도를 갖고 있다고 판단해 내린 결정이라고 들었습니다.

리멤버도 못하는데, 우리가 빠른 시간안에 할 수 있을까?
현실적인 의문이었습니다.

그래서 결론을 내렸습니다. 
이미지는 그냥 이미지로 보여주자.
어쩔 수 없는 선택이었습니다. 
매주 타이핑할 수도 없고, 
그렇다고 지원하지 아니할 수도 없었습니다. 
학식 앱 중에서는 거의 최초로 이미지로 식단정보를 제공하는 기능을 추가하게 되었습니다. 

이렇게 결정하고 나니, 다른 결정들이 편해졌습니다.
PDF나 PPT도 이미지로 보여주자!
PPT파일은 PDF파일로 바꾸고, PDF파일은 이미지로 바꾸고, 이미지는 앱 내에서 그대로 보여주고 있습니다.
밥대생 식단정보 전환 방식밥대생 식단정보 전환 방식




이렇게 되면 비교적 일이 쉬워집니다. 

서버에선 클라이언트에 이미지 url만 전달하면 됩니다. 

(다만, 갑자기 이미지가 해당 서버에서 사라지는 일을 방지하기 위해

자사의 ftp서버인 aws s3에 업로드한 이후에 해당 링크를 보냅니다)


지금까지 어떻게 밥대생에서 여러 형태의 식단정보를

수집하는지에 대해서 설명드렸습니다. 


HWP로 올라오는 식단정보에 대해서는 아직 설명드리지 못했는데,

해당 내용들은 아래 포스팅을 통해 확인하실 수 있습니다.


HWP로 올라오는 식단정보 크롤링하기(1/2)

HWP로 올라오는 식단정보 크롤링하기(2/2)



댓글
댓글쓰기 폼
공지사항
Total
30,988
Today
1
Yesterday
11
링크
«   2018/12   »
            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          
글 보관함