파이썬을 이용하여 이미지 크롤링 후 다운로드하는 것 까지 해보겠다.
프로젝트 진행 전 필요한 개발환경으로는 아래의 3가지가 필요하다.
0. Python 설치
1. VSCode설치
2. Python 가상 환경 설정
3. 크롬 드라이버다운
0. Python 설치
- 아래의 링크로 가 자신의 운영체제에 맞는 파이썬을 설치하면 된다.
1. VSCode설치
- 아래의 링크로 들어가 자신의 운영체제에 맞는 VS Code를 설치하면 된다.
2. Python 가상환경 설정
- 다운받은 VSCode를 실행한 후 Open Folder를 눌러 작업환경이 될 파일을 선택한다. 아무 곳이나 상관은 없지만 작업을 위한 접근이 필요하기 때문에 자신이 아는 위치로 설정해야 한다. 나 같은 경우 C:\Users\lth11\travelar\selenium_test 폴더를 작업 폴더로 지정하였다.
2.1 Python venv 가상 환경 설정
ⓛ VSCode에서 Terminal을 연다
② Terminal 에서 python -m venv selenium를 입력한다
커멘드를 입력한 후 selenium이 생성된 것을 볼 수 있다.
- 이후 cd selenium/Scripts 을 입력하여 selenium/Scripts 작업환경으로 이동한다.
- 이동 후 .\activate 명령어를 입력한다
!!!!!!!! 위의 과정에서 오류가 있을 수 있다. 오류 발생 시 아래의 링크 참조!!!!!!!!!!
- pip install selenium 명령어 입력해서 selenium 다운
3. 크롬 드라이버다운
- 크롬 드라이버 다운 전 크롬의 버전을 확인해야 한다.
- 아래의 링크로 들어가서 확인한 크롬 버전과 같은 크롬 드라이버를 다운로드한다.
chromedriver.chromium.org/downloads
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
driver = webdriver.Chrome() #브라우저로 아까 다운받은 크롬 드라이버 선택
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=ri&ogbl") #이미지 페이지를 연다
elem = driver.find_element_by_name("q") #검색창을 찾는 문장 name이 q이다. 개발자 화면을 열어서 확인하면 된다.
elem.send_keys("강아지") #검색창에 '강이지' 입력
elem.send_keys(Keys.RETURN) #엔터키 입력
#스크롤을 맨 아래까지 내려줘서 이미지를 나오게 한다.
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(1)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
print(new_height)
if new_height == last_height:
try :
driver.find_element_by_class_name('mye4qd').click()
time.sleep(3)
except :
break
last_height = new_height
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")#검색 후 나온 모든 이미지를 images에 넣는다. #여러가지를 찾을때는 elements
count = 1
for image in images :
try :
image.click() #모든 이미지들중 하나를 클릭
time.sleep(1)#위에 코드에서 이미지를 클릭한 후 이미지의 주소를(src)를 가지고와야 하는데 이미지가 불러와지기 전에 다음 코드가 실행되기때문에 일정 시간을 주는 코드이다.
imgUrl = driver.find_element_by_xpath("/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div/div[2]/a/img").get_attribute("src") #클릭한 이미지의 주소를 가지고온다. 기존에 class이름으로 찾는것을 하였지만 같은 이름이 어려개가 있어서 xpath로 수정하였다.
urllib.request.urlretrieve(imgUrl, str(count)+".jpg") #이미지 저장
count = count + 1
except :
pass
driver.close()
#
# assert "Python" in driver.title
# elem = driver.find_element_by_name("q")
# elem.clear()
# elem.send_keys("pycon")
# elem.send_keys(Keys.RETURN)
# assert "No results found." not in driver.page_source
'Python' 카테고리의 다른 글
[Python] try except 문 활용 에러 고치기urllib.error.HTTPError: HTTP Error 429: Too Many Requests (0) | 2022.05.27 |
---|---|
[Python][datetime] 날짜, 시간 다양한 출력법 정리 (0) | 2022.05.26 |
[Python] selenium 엔터키 입력 (0) | 2021.08.28 |
[Python][VScode 터미널 오류] 이 시스템에서 스크립트를 실행할 수 없으므로 ps1 파일을 로드할 수 없습니다. (0) | 2021.08.24 |
Python (numpy) : 배열 크기, 형상 확인(shape, ndim, size) (0) | 2021.08.22 |