본문 바로가기

Project/Gathering

Crawling 구현 1

Crawling 서버를 구현하기 위해 crawling 기능을 구현하고자 한다.

 

크롤링 할 사이트는 

https://dev-event.vercel.app/events

 

Dev Event - 개발자 행사는 모두 데브이벤트 웹에서!

개발자를 위한 {웨비나, 컨퍼런스, 해커톤, 네트워킹} 소식을 알려드립니다.

dev-event.vercel.app

https://linkareer.com/

 

링커리어 LINKareer | 대외활동 공모전 대학생 인턴 대기업 채용정보

대기업 채용, 인턴, 대학생 대외활동, 공모전, 동아리 등 개인에게 맞춤화된 커리어 정보를 추천받으세요! 커뮤니티에서 고민을 나누고, 인턴 및 신입 합격 후기도 확인 할 수 있습니다. 관심 있

linkareer.com

해당 두 사이트를 통해 구현하려고 한다.

※ 크롤링 전에 robots.txt 확인 필수!! -> robots.txt 란 obots.txt 파일은 봇에 대한 지침이다. 웹 크롤러와 같은 활동을 할때 허용 범위를 나타내 주는 것이다. 사용법은 사이트명 + /robots.txt라고 url을 사용하면 된다.

링커리어 robots.txt 결과

다음과 같이 허용되는 범위나 기준을 보여준다.

 

크롤링할 시 python selenium 라이브러리를 사용할 예정이다. selenium은 js를 사용한 동적 사이트를 크롤링할때 효과적이다.

 

구현 시작!

1. 크롤링 정보확인

해당 사이트 들어서 가져올 수 있는 정보들을 확인한다.

DEV.EVENT 사이트
링커리어 사이트

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

※ 팁

크롤링시, 오른쪽 클릭 검사를 누르면 쉽게 해당 태그를 찾을 수 있다.

 

2. 가상환경 세팅

파이썬 프로젝트 진행시, 꼭 가상환경 만들어서 해당 가상환경에서 진행하는 것이 좋음 (패키지 관리 가능)

Anaconda 프롬프트 화면

다음과 같이 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

여기서 확인이 가능하다.

728x90

'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