크롤링 05_이미지 데이터 수집
[포켓몬 이미지 수집하기]
- 라이브러리 불러오기
- 웹브라우저를 통제하기 위한 라이브러리
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 |