728x90
조코딩님의 [파이썬 셀레니움 이미지 크롤링으로 배우는 업무 자동화의 기초] 강의를
보며 정리한 글입니다.
강의 링크는
하기와 같습니다.
:=> www.youtube.com/watch?v=1b7pXC1-IbE&list=PLU9-uwewPMe2-vtJAgWB6SNhHcTjJDgEO&index=2
selenium 설치 및 작동 확인
- 가상환경 설치
- 가상환경으로 interpreter 변경
- selenium 설치
- webdriver-manager 설치
- google.py 생성 후 아래 코드 입력
google.py 소스는 하기와 같습니다.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
#selenium의 webdriver로 크롬 브라우저를 실행한다
driver = webdriver.Chrome("./chromedriver", options = options)
driver.maximize_window()
#"Google"에 접속한다
driver.get("https://www.google.co.kr/imghp?hl=ko&ogbl")
#페이지의 제목을 체크하여 'Google'에 제대로 접속했는지 확인한다
assert "Google" in driver.title
#assert "Naver" in driver.title
#검색 입력 부분에 커서를 올리고
#검색 입력 부분에 다양한 명령을 내리기 위해 elem 변수에 할당한다
elem = driver.find_element_by_name("q")
elem .send_keys("오픈서포트")
elem.submit()
prev_height = driver.execute_script("return document.body.scrollHeight")
# 웹페이지 맨 아래까지 무한 스크롤
while True:
# 스크롤을 화면 가장 아래로 내린다
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 페이지 로딩 대기
time.sleep(2)
# 현재 문서 높이를 가져와서 저장
curr_height = driver.execute_script("return document.body.scrollHeight")
if(curr_height == prev_height):
try:
driver.find_element_by_css_selector(".mye4qd".click())
except:
break
prev_height = curr_height
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")
count = 1
for image in images:
try:
image.click()
time.sleep(2)
#imgUrl = driver.find_element_by_css_selector(".n3VNCb").get_attribute("src")
imgUrl = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div/div[2]/a/img').get_attribute("src")
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
count = count + 1
except:
pass
driver.close()
# #입력 부분에 default로 값이 있을 수 있어 비운다
# elem.clear()
# #검색어를 입력한다
# elem.send_keys("Selenium")
# #검색을 실행한다
# elem.submit()
# #elem.send_keys("Keys.RETURN")
# #검색이 제대로 됐는지 확인한다
# assert "No results found." not in driver.page_source
# #브라우저를 종료한다
# #driver.close()
본 소스의 내용은
유튭 강의 링크를 참고하시면 됩니다.
참고로 깃허브의 소스 링크는 하기와 같이.
:=> github.com/freeNanum/selenium-image-crawling/blob/main/google.py
우선, 강의대로 그대로 진행하면 안되는 부분이 있고
에러가 나서 이를 해결하기 위한 부가적인 코드를 추가하여
작성되었습니다.
현재 2021년 5월 기준으로 잘 작동되는 것을 확인하였습니다.
또 이 글을 보고 코드를 가져다 사용할 때
문제가 되는점이 있다면 알려주시길 바랍니다.
(추가업데이트)
국내 개발자 커뮤니티 모아보기 앱이 있습니다.
'데브모아' 라는 앱인데 하기에서 다운로드 가능합니다.
:=> https://play.google.com/store/apps/details?id=com.opensupport.DevMoa
본 게시글은
추후 계속 업데이트 됩니다.
728x90
'개발 이야기 > 파이썬 개발' 카테고리의 다른 글
파이썬 YouTube 뮤직플레이어 개발 강좌 - 공유! (0) | 2021.05.25 |
---|---|
딥러닝 파이썬 코드로 외설 사진 판별하기 (0) | 2021.05.10 |
Awesome Python (0) | 2021.04.24 |
파이썬 GUI Framework - DearPygui 사용하기 (0) | 2021.03.28 |
파이썬으로 단축URL 만들기 (1) | 2021.03.28 |