기존 구글에 돌아다니는 코드는 더이상 지원하지 않는 문법을 사용하여, 다소 업데이트된 코드로 작성함
인자로 검색어를 받아 크롬에서 구글 이미지를 통해 검색 후 저장
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import time import urllib.request import os, sys def crawling(word: str) -> None: imgFolder = f"./{word}/" if not os.path.isdir(imgFolder): os.makedirs(imgFolder) chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) driver.get("https://www.google.co.kr/imghp?hl=ko") driver.implicitly_wait(time_to_wait=10) keyElement = driver.find_element(By.XPATH, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input') keyElement.send_keys(word) keyElement.send_keys(Keys.RETURN) bodyElement = driver.find_element(By.TAG_NAME, 'body') time.sleep(5) for _ in range(30): bodyElement.send_keys(Keys.PAGE_DOWN) time.sleep(0.5) images = driver.find_elements(By.CSS_SELECTOR, "#islrg > div.islrc > div > a.wXeWr.islib.nfEiy > div.bRMDJf.islir > img" ) imageURL = [] try: for image in images: if image.get_attribute('src') is not None: imageURL.append(image.get_attribute('src')) for seq, urlImg in enumerate(imageURL): urllib.request.urlretrieve(urlImg, imgFolder + f"{seq:0>3}.jpg") except: pass print("Crawling End") if __name__ == "__main__": args = sys.argv if len(args) == 2: crawling(args[1]) else: print("Error: inappropriate Argument")
'프로그래밍 > 미니 프로젝트' 카테고리의 다른 글
Javafx를 활용한 육목(Connect6) 만들기 (0) | 2022.06.06 |
---|