본문 바로가기
활동/팀 프로젝트

팀플[당근마켓분석]: (1.데이터추출)(1)크롤링(selenium/셀레니움)

by dokii 2021. 4. 10.
728x90

1. 크롤링 이란?

  • 데이터를 수집하고 분류하는것, 주로 인터넷 상의 웹페이지의  html,문서 등을 수집해서 분류하고 저장하는것.

2. selenium 

  • 셀레니움 라이브러리를 사용하는 이유 : 웹 페이지의 DOM에 접근하여 요소를 가져올수있다.
  • 웹 브라우저를 제어하고, 마우스 또는 키보드 입력을 자동화 하여 웹사이트에 접근-데이터를 가져올수 있다.
  • 속도가 다소 느리다.

3. selenium 라이브러리 설치하기.

  • !pip install selenium을 실행
  • https://chromedriver.chromium.org/downloads  접속후 chrome브라우저 버전에 맞는 드라이버 받기
  • 압축을 풀고, chromedriver.exe파일이 생성된다. -> 작업 할 폴더로 옮겨놓는다. 
  • 다음과 같은 코드로 크롬 드라이버를 불러올수 있다.
from selenium import webdriver
my_driver = webdriver.Chrome("chromedriver.exe")

 

4. 크롤링할 데이터 정하기.

  • 당근마켓 웹페이지에서, 각자 맡은 구를 가지고 데이터를 가져온다.
  • 데이터는 상품이름, 판매자닉네임,주소,상세내용,가격,크롤링한 시간, 게시글의시간(~시간전), 채팅수, 조회수, 관심수

5. 코드 작성

  • 5-1 : import 하기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys #다양한 키사용 가능하게해줌

import bs4
import time 	#크롤링할때 대기시간을 준다
import datetime #크롤링 시간 측정
import re
import pandas as pd

my_driver=webdriver.Chrome('chromedriver.exe')

 

  • 5-2 : 크롬드라이버 사용 준비하기, 크롤링시작 시간 찍기.
my_driver.get('http://www.daangn.com/hot_articles')

datetime.datetime.now().strftime('%Y-%m-%d %H:%M') #연-월-일 시-분

 

  • 5-3
my_delay=0.3 #0.3초만큼 딜레이 시간을준다.
my_driver = webdriver.Chrome('chromedriver.exe') #크롬을 띄운다.
my_driver.get("http://daangn.com/hot_atricles") #당근웹사이트로 접속한다.

드롭바를 내려서 시-구-동 을선택한다. 서울에 한해서만 자료를 수집하기로 하였다.

 - 유의사항. 특정 selector를 가져올때, 한개가 아닌 여러개를 가져오려면 elements로 써야한다.(s를 붙여준다.)

 - 유의사항2. xpath를 이용할때, 숫자는 쓸수 없다. str형태로 바꾸어주어야한다.

 

driver.page_source: 브라우저에 보이는 그대로의 HTML, 크롬 개발자 도구의 Element 탭 내용과 동일.

requests 통해 가져온 req.text: HTTP요청 결과로 받아온 HTML, 크롬 개발자 도구의 페이지 소스 내용과 동일.

 

 

 


 

시작 일 21.04.06 종료 일   합 계  
역할 또는
작업내용
공동 작업
- 크롤링 코드짜기  
사용 기술 selenium(셀레니움)
chromedriver(크롬 드라이버)
작업환경 주피터 노트북
python3
인원 5명 메모 각자 크롤링 코드를 짜면서 상황을 공유하고,
더 빨리 되는 팀원분의 코드를 사용하였다.
정말... 어렵다. 잘하는 사람은 역시 빠르다.

 

728x90

댓글