크롤링

[크롤링]5. 이미지 데이터 수집

CodeJaram 2023. 7. 4. 09:46

크롤링 05_이미지 데이터 수집

 

[포켓몬 이미지 수집하기]

  1. 라이브러리 불러오기

 

  • 웹브라우저를 통제하기 위한 라이브러리

from selenium import webdriver as wb 

 

  • html 문서에서 태그와 선택자의 위치를 찾기 위한 라이브러리

from selenium.webdriver.common.by import By

 

  • 웹에 값을 입력하기 위한 라이브러리(컴퓨터용 키보드)

from selenium.webdriver.common.keys import Keys

 

  • 컴퓨터가 이해하기 쉬운 객체로 변환해주는 라이브러리

from bs4 import BeautifulSoup as bs

 

  • 코드 실행 중간에 쉬는 시간을 부여해주는 라이브러리

import time

 

  • os 라이브러리: 운영체제의 기능을 파이썬에서 빌려쓰는 라이브러리

파일이나 폴더를 생성하기 위한 라이브러리(파일시스템 라이브러리)

import os 

 

  • 이미지 파일의 경로를 파일형태로 변환해주는 라이브러리

-이미지는 인터넷에서 url 형태로 존재한다. 

from urllib.request import urlretrieve

 

2. 바탕화면에 '포켓몬 도감' 폴더 생성(os 라이브러리 사용)

 

  • if os.path.isdir(경로)->경로에 해당 디렉토리가 존재하는지 os에 물어보는 코드

 

-경로: 파일탐색기-바탕화면-아무 폴더-속성-위치복사

-역슬래시(\)는 줄바꿈이나 이스케이프 기능으로 사용 중이기 때문에 역슬래시(\)->슬래시(/)로 바꾸기





if not os.path.isdir('C:/Users/smhrd/Desktop/포켓몬도감'): #'포켓몬도감' 폴더가 없으면

    os.mkdir('C:/Users/smhrd/Desktop/포켓몬도감') #폴더 생성

    print('폴더가 생성되었습니다.')

else: #'포켓몬 도감' 폴더가 있으면

    print('이미지 폴더가 이미 존재합니다.')

 

3. 페이지 스크롤 내리기

-컴퓨터용 키보드 활용하여 방향키(↓), page down, space bar, end 키로 스크롤 내리기

-화면 전체를 담당하는 <body> 태그에 스크롤 내리기 명령을 내림

 

  • body 태그 찾기: body=driver.find_element(By.CSS_SELECTOR, 'body')
  • 스크롤 명령하기: body.send_keys(Keys.END)
  • 반복문을 사용하여 여러 번 스크롤하기

for i in range(10):

    body.send_keys(Keys.END)

    time.sleep(2) #페이지 로딩시간 기다리기



4. 객체화하기: soup=bs(driver.page_source, 'lxml')

5. 이미지 태그 선택하기: poke_img=soup.select('img.img-fluid')

6. 이미지 태그에서 src 추출하기: poke_img[0]['src']

-이미지 태그는 홑태그(닫는 태그 없는 태그)이므로 contents가 없다.

-이미지를 수집하려면 이미지 주소(src)에 접근해야 한다.

-src 추출방법: 태그[src]: 

 

  • 반복문을 사용하여 리스트에 src 저장하기

poke_list=[]

for i in range(len(poke_img)):

    poke_list.append(poke_img[i]['src'])

 

7. 이미지 경로를 이미지 파일로 변환하고 새로 만든 폴더에 저장하기

 urlretrieve('이미지 주소값(src)', '저장할 경로(폴더 경로)/파일이름.파일형식')

 

  • 반복문을 사용하여 이미지 파일로 변환하기

 

for i in range(len(poke_list)):

    urlretrieve(poke_list[i], f'C:/Users/smhrd/Desktop/포켓몬 도감/{i+1}번 포켓몬.jpg')

 

'크롤링' 카테고리의 다른 글

[크롤링]4. selenium 실습  (0) 2023.06.29
[크롤링]3. selenium 라이브러리  (0) 2023.06.28
[크롤링]2. 크롤링 실습  (0) 2023.06.27
[크롤링]1. 크롤링 기초  (0) 2023.06.26