인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

이준용님의 프로필 이미지

작성한 질문수

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

탐색기에서 파일 실행 vs IDE에서 파일 실행 결과물이 다릅니다

해결된 질문

작성

·

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. 접근이 막히니까 원본을 못 긁고 썸네일 저화질 이미지를 긁은 듯(...).

 

아무튼 해결은 했습니다. 다른 방식으로 코드를 짠 걸 긁어서 써 보다가 깨달은 거지만...