본문 바로가기
Integration & Python

파이썬 셀레니움 이미지 크롤링 예제

by 누워서 코딩 2021. 2. 8.

1. venv 가상 환경 설치

 

vnnv 가상환경 가이드 문서

 

venv — Creation of virtual environments

Source code: Lib/venv/ The venv module supports creating lightweight “virtual environments”, each with their own independent set of Python packages installed in their site directories. A virtual en...

docs.python.org

 

가상 환경은 다음 명령어로 설치합니다.

 

python3 -m venv /path/to/new/virtual/environment

 

물론 여기서는 자신의 로컬 환경에 맞게끔, python3이 아닌 python으로 조금 수정해서 입력합니다.

다음과 같이 python.exe가 있는 기본 경로에서 명령어를 입력합니다.

 

AppData\Local\Programs\Python\Python38>python -m venv selenium

 

다음과 같이 python의 기본 경로(Python38) 안에 selenium이라는 가상의 공간이 만들어진 것을 확인할 수 있습니다.

 

 

생성된 가상 환경의 Scripts 폴더로 이동

 

다음처럼 cd selenium\Scripts 경로로 들어갑니다.

D:\PY_Test\selenium\Scripts>

 

activate 명령어 입력합니다.

D:\PY_Test\selenium\Scripts>activate

 

다음처럼 경로의 앞에 (selenium)이 붙으면 파이썬 가상 환경이 세팅이 완료된 것입니다.

 

(selenium) D:\PY_Test\selenium\Scripts>

 

2. selenium 모듈 설치

pip install selenium

 

WARNING: You are using pip version 19.2.3, however version 21.0 is available.

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

 

참고로 다음 Warning이 출력되면, pip install --upgrade pip로 가상 환경에서도 pip를 업그레이드해줘도 되고, 안 해줘도 무방합니다.

 

Tip 1:

"no module named venv"이라고 출력되면, 해당 python 버전의 경로가 세팅되어 있지 않거나, 현재의 interpreter의 python 경로로 path를 3.7 이상 버전으로 변경하면 됩니다.
(필자는 현재 날짜의 최신 버전인 Python 3.9.1 버전으로 변경하였습니다.)

다음 경로에서 activate 명령 입력 후 엔터 실행합니다.
selenium\Scripts\activate

 

Tip 2:

visual studio code를 사용한다면, 왼쪽 하단에 selenium 환경으로 선택해 줘야 문법 오류(물결무늬)가 없습니다.

 

실행하면, chrome 브라우저가 실행되고 좌측 상단에 test software에 의해 제어되고 있다는 메시지가 출력됩니다.

 

여기까지 됐다면, 파이썬 셀레늄 기본 환경은 설정이 된 것입니다.

 

다음은 예제 코드로 특정 사이트에서 이미지를 다운로드하는 예제를 다뤄 보겠습니다.

 

3. 기본 예제 코드 작성

 

구글링 해보면 selenium 관련 예제 코드를 다음과 같이 쉽게 찾을 수 있습니다.

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.python.org")
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()

 

자신의 Chrome의 버전에 맞는 Chromedriver를 구글에서 다운로드합니다.

다운로드된 chromedriver.exe를 selenium경로에 다음과 같이 붙여 넣습니다.

 

 

필자는 무료 이미지 공유 사이트로 잘 알려진 pixabay라는 사이트에서 키워드를 검색해서 무료 이미지를 다운로드까지 하는 코드를 작성해 봤습니다.

 

pixabay실습 코드는 아래처럼 작성되었습니다.

아래 코드 참고해서 수정해 실습해보시길 추천드립니다.

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.request
import time

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(chrome_options=options)

elem = driver.find_element_by_name("q")
elem.send_keys("stock free image")
elem.send_keys(Keys.RETURN)

images = driver.find_elements_by_css_selector(".credits.search_results")
print("images=", images)
count = 1
for image in images:
try:
image.click()
time.sleep(2)

imgURL = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[1]/div/img').get_attribute("src")
print("imageURL=",imgURL)
headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}

request_=urllib.request.Request(imgURL,None,headers) #The assembled request
response = urllib.request.urlopen(request_)# store the response

#create a new file and write the image
f = open(str(count) + ".jpg",'wb')
f.write(response.read())
count = count + 1
f.close()

driver.close()

이 블로그의 다른 글 읽기

 

Python을 이용한 네이버 홈쇼핑 키워드 크롤링 예제

웹을 이용해 얻고 싶은 정보를 얻어 자동화하는 일을 웹 크롤링이라고 합니다. 다른 말로 웹 스크랩핑(Scraping)이라고도 합니다. 쉬운 예로, 웹 크롤링을 사용하면 네이버에서 제공하는 실시간 검

freernd.tistory.com

댓글