해결된 질문
작성
·
296
0
(코드는 하단에)
pycharm을 통해 실행하면 큰 사진으로 잘 긁어오는데, 파일 탐색기에서 파일을 더블클릭해서 실행하는 경우 큰 사진으로 안 되네요. 물론 pyinstaller를 이용해 exe 파일로 만들어도 사진은 작게 나와요...
- 탐색기 실행
- pycharm에서 버튼 눌러서 실행
Code
from selenium import webdriver
import urllib.request as request
import pyautogui
import os
import time
import random
# Activate chromedriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
search_word = pyautogui.prompt("검색어를 입력해주세요.")
driver.get(f'https://www.google.co.kr/search?q={search_word}')
driver.maximize_window()
# '이미지 검색' click
image_search = driver.find_element_by_xpath('//*[@id="hdtb-msb"]/div[1]/div/div[2]/a')
image_search.click()
# Make a folder
if not os.path.exists(search_word):
os.makedirs(search_word)
# Scroll
last_height = driver.execute_script('return document.body.scrollHeight')
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
new_height = driver.execute_script('return document.body.scrollHeight')
if new_height == last_height:
break
last_height = new_height
# 이미지 개별 클릭
image_click = driver.find_elements_by_css_selector('.rg_i.Q4LuWd')
for i, image in enumerate(image_click, start=1):
driver.execute_script('arguments[0].click();', image)
time.sleep(random.randint(10, 30) * 0.1)
target_image = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div['
'2]/div/a/img')
target_source = target_image.get_attribute('src')
# src 출력해보면 확장자가 안 뜨니까 그냥 일괄적으로 통일함
opener = 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')]
request.install_opener(opener)
print('작업이 완료되었습니다.')
driver.close()
답변 1
0
제가 파이참을 사용하지 않아서 잘 모르겠네요ㅎㅎ
더블 클릭해서 실행하는 것은 파이참 형식의 파일만 가능 한 것 같습니다.
일반 파이썬 파일은 더블클릭해서 실행이 안되네요.
- 저의 경우 pyinstaller로 실행파일을 만들었을 때 큰 이미지 파일로 잘 가져 옵니다..
1. vscode를 통한 실행, shell을 통한 파일 실행 등 다른 방법에서 전부 문제가 터진 걸로 봐서는 파이참을 통한 실행이 특수한 경우였던 것 같습니다.
2. 태그나 xpath를 긁어온 과정은 문제가 없는 것 같습니다. 문제는 User-Agent가 크롬 쪽에서 버전이 안 맞아서인지(현재 v96.0인데 v36.0으로 했으니) 원본 접근할 때 forbidden을 시전한 것 같습니다.
3. 접근이 막히니까 원본을 못 긁고 썸네일 저화질 이미지를 긁은 듯(...).
아무튼 해결은 했습니다. 다른 방식으로 코드를 짠 걸 긁어서 써 보다가 깨달은 거지만...
소스코드가 같다면, 같은 이미지 크기로 가져오는 게 정상이라고 생각합니다.