조코딩님 강의 중에서 파이썬 응용 강의를 보고 공부했다.
이미지 크롤링에 관한 내용인데, 쉽게 말해 자동화라고 할 수 있겠다.
구글에 특정 검색어를 입력해서 이미지를 하나하나 다운로드하여오는 것을 파이썬을 이용하여 자동화시켰다.
-----------------------------------------------------------------------------------------------------------------------------------
1. 파이썬 가상 환경 세팅
만들고자 하는 프로그램에 따라 호환되는 파이썬 버전이 다를 수 있음.
따라서 하나의 컴퓨터에서 파이썬 버전을 독립적으로 분리하여
사용할 수 있음.
Selenium을 가상 환경에 설치하여 진행하였다.
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=wi&ogbl")
elem = driver.find_element_by_name("q")#특정 요소를 찾는 코드x`
elem.send_keys("방탄소년단 지민") # 키보드 입력값 전송
elem.send_keys(Keys.RETURN) #엔터키 전송
SCROLL_PAUSE_TIME = 1
# 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(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
try:
driver.find_element_by_css_selector(".mye4qd").click() #결과 더보기 클릭
except:
break
last_height = new_height
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd") #한개 선택은 element 여러개 선택 elements 작은이미지 클릭해서 큰이미지 띄움
count = 1
for image in images:
try:
image.click()
time.sleep(3) #브라우저를 클릭하고 동작하는데 시간이 걸리므로 중간에 지연시키는 dummy코드가 필요함.
imgURL = driver.find_element_by_css_selector(".n3VNCb").get_attribute("src") # 큰이미지의 src 주소값 가져옴
urllib.request.urlretrieve(imgURL, "test"+str(count)+".jpg")
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
# driver.close()
반응형
'Python > python_study' 카테고리의 다른 글
21/1/24 python 추가 공부 (0) | 2021.01.25 |
---|---|
파이썬만의 트릭 (for-else문) (0) | 2021.01.21 |
정규표현식 추가 공부(2021/1/14) (0) | 2021.01.20 |
파이썬 공부 시작 - Day 2(2020/12/26) (0) | 2021.01.20 |
파이썬 공부 시작 - Day 1(2020/12/25) (0) | 2021.01.20 |