Eggs Sunny Side Up
본문 바로가기
Web/Crawling

포켓몬 이미지 데이터 수집

by guswn100059 2023. 4. 12.

1  포켓몬스터 공식 홈페이지에서 이미지 데이터 수집하기

  • 바탕화면에 포켓몬도감이라는 폴더를 만들고
  • 이미지 데이터를 다운로드 받아서 폴더 안에 하나씩 저장하기
from selenium import webdriver as wb
# 웹 브라우저를 통제하기 위한 라이브러리

from selenium.webdriver.common.by import By
# html 문서에서 태그와 선택자의 위치를 찾기 위한 라이브러리

from selenium.webdriver.common.keys import Keys
# 웹에게 값을 입력하기 위한 라이브러리

from bs4 import BeautifulSoup as bs
# 컴퓨터가 이해하기 쉬운 객체로 변경해주는 라이브러리

import time
# 코드 중간에 쉬는 시간을 부여해주는 라이브러리

import os
# 파일이나 폴더를 생성해주는 라이브러리(파일 시스템 라이브러리)

from urllib.request import urlretrieve
# 이미지 경로를 파일로 변환시켜주는 라이브러리

# 바탕화면에 '포켓몬도감'이라는 폴더 생성하기 => os 사용
# 이스케이프 코드이기 때문에 \는 \\ or / 로 표현해줘야함.
# => \가 줄바꿈, 탭 등의 이스케이프 기능으로 이미 사용
# if not else
if not os.path.isdir('C:\\Users\\User\\Desktop/포켓몬도감') :
    os.mkdir('C:\\Users\\User\\Desktop/포켓몬도감') # 폴더를 생성하는 코드
    print('폴더가 생성되었습니다.')
else :
    print("이미지 폴더가 존재합니다.")

# 포켓몬스터 공식 홈페이지 정보 가져오기
driver = wb.Chrome()
driver.get('https://pokemonkorea.co.kr/pokedex')

# 객체화
soup = bs(driver.page_source, 'lxml')
poke_img = soup.select('img.img-fluid')
poke_img[0].text
# 비어있는 데이터가 출력
# .text : 여는 태그와 닫는태그 사이에 있는 contents(요소)를 가져와준다.
# img 태그는 홑태그이므로 contents가 존재하지 않는다.
# 이미지를 저장하려면?
# 이미지가 저장된 경로를 수집한다.
poke_img[0]
# 이미지태그의 src값 추출
# 속성값 인덱싱으로 접근! poke_img[0]['속성명']
poke_img[0]['src']
# 순수한 이미지 src(주소)값을 담을 리스트 제작 => 반복문을 통해 하나하나 저장
img_list = []
for img in poke_img :
    img_list.append(img['src'])
  • 이미지의 경로(src) 값을 활용해서 이미지파일로 변환시켜주는 라이브러리 사용
  • 이미지 파일로 저장
# 이미지 파일로 저장
# urlretrieve(저장할 이미지의 주소값(src), '저장할 경로')
urlretrieve(img_list[0], 'C:\\Users\\smhrd\\Desktop/포켓몬도감/1번포켓몬.jpg')
# 반복문을 사용해서 모든 데이터 저장하기
url_list = []
for i in range(len(img_list)) :
    url_list.append(urlretrieve(img_list[i], f"C:\\Users\\smhrd\\Desktop/포켓몬도감/{i+1}번포켓몬.jpg"))

화면에서 스크롤 내리는 방법

  • page down
  • space
  • end
# 키보드에 있는 end키를 사용해서 스크롤 내리기(자동스크롤진행)
# --> 누구에게 부탁
# 화면 전체를 담당하는 body 태그에게 부탁
btn = driver.find_element(By.TAG_NAME, 'body')
for i in range(20) :
    btn.send_keys(Keys.END)
    time.sleep(2)

 

종합

if not os.path.isdir('C:\\Users\\smhrd\\Desktop/포켓몬도감'):
    os.mkdir('C:\\Users\\smhrd\\Desktop/포켓몬도감') # 폴더를 생성하는 코드
    print('폴더가 생성되었습니다.')
else :
    print('이미지 폴더가 존재합니다.')
    
driver = wb.Chrome()
driver.get('https://pokemonkorea.co.kr/pokedex')
time.sleep(2)

img_list = []

for i in range(5) :
    btn = driver.find_element(By.TAG_NAME, 'body')
    btn.send_keys(Keys.END)
    time.sleep(1)
    
soup = bs(driver.page_source, 'lxml')
    
poke_img = soup.select('img.img-fluid')
    

for img in poke_img :
    img_list.append(img['src'])
    
for i in range(len(poke_img)) :
    urlretrieve(img_list[i], f'C:\\Users\\smhrd\\Desktop/포켓몬도감/{i+1}번포켓몬.jpg')

'Web > Crawling' 카테고리의 다른 글

크롤링 시험  (0) 2023.04.13
네이버 이미지 데이터 수집  (0) 2023.04.13
Gmarket 상품정보 수집  (0) 2023.04.10
한솥도시락 data 크롤링  (0) 2023.04.09
selenium 라이브러리  (0) 2023.04.09

댓글