elementary_crawl's People
elementary_crawl's Issues
서울서이초등학교 게시판 본문 스크래핑 시 index out of range 발생
가끔 tbody > tr > td > div 선택 시 비어있는 list가 반환되어 index out of range가 발생함.
response 확인하면서 원인 파악 필요
이미지 크롤링 시 max size 지정 필요
크롤러 단에서 미리 max size를 지정해주어야 별다른 가공 없이 content html을 바로 렌더링할 수 있다.
이미지 핸들링 시 max size를 지정해주도록 변경한다.
초등학교 목록 크롤링 추가
전국 초등학교를 school 테이블에 저장할 수 있도록 초등학교 목록을 크롤링합니다.
데이터는 나이스 OPEN API에 xml 또는 json 형태로 요청하여 가져옵니다.
데이터 요청 방법
GET https://open.neis.go.kr/hub/schoolInfo
params:
- KEY: API 인증키
- Type: 데이터 포맷 (xml or json)
- pSize: 페이지 당 데이터 개수
- pIndex: 페이지 번호
- SCHUL_KND_SC_NM: 학교 종류(초등학교 고정)
자세한 정보는 나이스 Open API 학교기본정보 데이터셋 상세에서 확인 가능
크롤러 코드 리팩토링
변경된 크롤러 구조에 따라 코드를 재작성합니다.
이미 진행한 서이초등학교를 변경된 크롤러 구조에 맞춰 다시 크롤링합니다.
- DB Connection 및 Data Insert/Update를 담당하는 객체 생성
- asyncio를 이용하는 크롤링 코드 작성
- 스크래핑 로직 변경
- 변경된 DB 테이블 구조에 맞춰 스크래핑 진행 (Data 전달 Class 수정)
- 첨부파일은 GCS 버킷에 업로드
- 버킷 내 오브젝트 이름: attachment/{uuid}/{filename}
- img태그 src 확인 후 GCS 버킷에 업로드
- 버킷 내 오브젝트 이름: image/{uuid}
데이터 확인 웹페이지 재구성
변경된 데이터 구조에 따라 데이터를 확인하는 웹페이지를 재구성합니다.
- 학교 선택 View 작성
- 학교 별 데이터 확인 View 수정
변경된 크롤러 구조에 맞춰 README.md 업데이트 필요
- .env 설정
- google_credentials 설정
- run.sh를 통한 의존성 설치 및 실행
- 디렉토리 구조
위 내용을 담도록 README.md 업데이트가 필요합니다.
데이터 확인 웹페이지 UI 개선
- 학교별 post list view 또는 post detail view의 페이지 제목인 학교 이름을 클릭하면 해당 학교 post list view로 이동
- 학교 이름 옆에 메인 화면(학교 선택창)으로 가는 링크 추가
중복된 학교 이름이 많아 school 테이블 구조 변경 필요
중복된 학교 이름이 많아서 school 테이블에 컬럼을 추가해야합니다.
아래의 데이터를 기반으로 추가할 컬럼을 고려합니다.
나이스 Open API 기준 학교 기본 정보
- ATPT_OFCDC_SC_CODE 시도교육청코드
- ATPT_OFCDC_SC_NM 시도교육청명
- SD_SCHUL_CODE 표준학교코드
- SCHUL_NM 학교명
- ENG_SCHUL_NM 영문학교명
- LCTN_SC_NM 소재지명(광역지방자치단체)
- JU_ORG_NM 관할조직명(교육지원청)
- ORG_RDNZC 도로명우편번호
- ORG_RDNMA 도로명주소
- ORG_RDNDA 도로명상세주소
- HMPG_ADRES 홈페이지주소
각 게시물 데이터 확인 시 본문 html이 깨짐
- DB에 \n, " 형태로 escape 되어 저장되어있음
- html 확인했을 때에도 \n, "으로 escape 되어있음
전주인봉초등학교 크롤러 추가
오늘의 급식(식단표) 크롤링 추가
오늘의 급식에 추가될 각 학교별 식단표를 크롤링합니다.
나이스 OPEN API에 xml 또는 json 형태로 데이터를 요청하여 저장합니다.
데이터 요청 방법
GET https://open.neis.go.kr/hub/mealServiceDietInfo
params:
- KEY: API 인증키
- Type: 데이터 포맷 (xml or json)
- pSize: 페이지 당 데이터 개수
- pIndex: 페이지 번호
- ATPT_OFCDC_SC_CODE: 시도교육청코드
- SD_SCHUL_CODE: 표준학교코드
시도교육청코드, 표준학교코드는 학교기본정보 데이터를 가져와 확인할 수 있음
자세한 정보는 나이스 Open API 급식식단정보 데이터셋 상세에서 확인 가능
DB 테이블 구조 수정
여러 학교들을 크롤링함에 따라 DB 테이블을 수정한다.
- 학교 테이블 추가
- post 테이블 내의 각 데이터 중복 방지 컬럼 수정
- attached_file 테이블의 각 데이터 중복 방지 컬럼 수정
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.