Crawling 서버를 구현하기 위해 crawling 기능을 구현하고자 한다.
크롤링 할 사이트는
https://dev-event.vercel.app/events
Dev Event - 개발자 행사는 모두 데브이벤트 웹에서!
개발자를 위한 {웨비나, 컨퍼런스, 해커톤, 네트워킹} 소식을 알려드립니다.
dev-event.vercel.app
링커리어 LINKareer | 대외활동 공모전 대학생 인턴 대기업 채용정보
대기업 채용, 인턴, 대학생 대외활동, 공모전, 동아리 등 개인에게 맞춤화된 커리어 정보를 추천받으세요! 커뮤니티에서 고민을 나누고, 인턴 및 신입 합격 후기도 확인 할 수 있습니다. 관심 있
linkareer.com
해당 두 사이트를 통해 구현하려고 한다.
※ 크롤링 전에 robots.txt 확인 필수!! -> robots.txt 란 obots.txt 파일은 봇에 대한 지침이다. 웹 크롤러와 같은 활동을 할때 허용 범위를 나타내 주는 것이다. 사용법은 사이트명 + /robots.txt라고 url을 사용하면 된다.

다음과 같이 허용되는 범위나 기준을 보여준다.
크롤링할 시 python selenium 라이브러리를 사용할 예정이다. selenium은 js를 사용한 동적 사이트를 크롤링할때 효과적이다.
구현 시작!
1. 크롤링 정보확인
해당 사이트 들어서 가져올 수 있는 정보들을 확인한다.


다음과 같이 공모전명, 주최, 날짜, 사진, 링크 5가지 정보를 가져오고자 한다.
※ 팁

크롤링시, 오른쪽 클릭 검사를 누르면 쉽게 해당 태그를 찾을 수 있다.
2. 가상환경 세팅
파이썬 프로젝트 진행시, 꼭 가상환경 만들어서 해당 가상환경에서 진행하는 것이 좋음 (패키지 관리 가능)

다음과 같이 conda create -n 가상환경이름
이렇게 프롬프팅을 진행해주면된다.
그후, 해당 환경으로 프로젝트 진행시 (VS 코드 기준)
VS코드를 열고, ctrl + shift + p -> python: Select Interpreter -> 원하는 가상환경 선택 과정으로 진행하면 된다.

그 후, 원하는 패키지를 다운 받게 되면 해당 가상환경에만 패키지를 받아서 관리할수 있다.
3. 구현
selenium 패키지를 이용하여 다음과 같이 구현하였다.

다음과 같은 코드를 실행했을때,


다음과 같은 결과를 얻을 수 있었다.
해당 결과에서 3가지 문제점을 확인하였다.
1. DEV 크롤링시 날짜 정보가
2024.10.07 (월) ~ 2024.11.08 (금) 이런 형식으로 나와 슬라이싱을 진행하였지만, 중간 중간 해당 슬라이싱으로 전처리가 깔끔하게 되지 않는 것을 확인함.
2. linkareer 크롤링시 날짜 데이터가 D-30 이런 식으로 작성되어있음. -> 현재 날짜 + D 날짜 식으로 저장
현재 날짜: 대외활동 시작날, D+현재 날짜: 공모전 끝나는 날
3. linkareer 크롤링시 이미지 데이터가
data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27250%27%20height=%27250%27/%3e 다음과 같이 이상한 형식으로 나옴.
해당 부분에 대해 추후 해결 방안을 모색해 보아야 할것으로 보인다.
모든 코드는
https://github.com/software-gathering/gather-be2
GitHub - software-gathering/gather-be2
Contribute to software-gathering/gather-be2 development by creating an account on GitHub.
github.com
여기서 확인이 가능하다.
'Project > Gathering' 카테고리의 다른 글
Gathering 기획 3 (1) | 2024.11.21 |
---|---|
Gathering 기획 2 (0) | 2024.11.16 |
Crawling 서버 구현 (1) | 2024.11.12 |
Crawling 구현 2 (0) | 2024.11.11 |
Gathering 기획 (0) | 2024.11.07 |