RedMeta

크롤링이란 웹 페이지를 가져와서 데이터를 사용자의 목적과 필요에 맞게

추출해 내는 행위입니다

검색엔진에서도 거의 필수적으로 사용하는데

검색엔진에서 사용하는 이유는 웹상의 다양한 정보들을 자동으로 검색하고 색인하기 위해서 입니다

지금 운영되고 있는 이 블로그도 여러 검색엔진에서 크롤링되고 있다고 볼 수 있습니다

파이썬이 이 분야에서는 강점이 많습니다



아마 비전공자들도 사용하기 별로 어렵지 않을 정도로 배우기가 쉬운 언어이고

크롤링 자체도 그렇게 어렵지 않게 배울 수 있는 기술입니다

오늘은 sellenium 라이브러리를 이용해서

구글에서 이미지를 검색해서 그 이미지를 가져오는 것까지 해보도록 하겠습니다

pypi.org/project/google-image-downloader/

 

google-image-downloader

Download images from any website

pypi.org

원래는 google-image-downloader 라는 것으로 크롤링이 가능했으나

구글에서 이를 막아버려서 직접 브라우저를 컨트롤 하는 방법으로 해야합니다

 

우선 selenium 이 필요하므로

pip install selenium

라이브러리를 먼저 설치해 주세요

그리고 버전에 맞게 크롬 드라이버를 설치해 주세요

다른 브라우저를 사용하시면 그 브라우저에 맞게 드라이버를 찾으셔서 다운받으시면 됩니다

다운 받은 드라이버는 프로젝트 폴더 안에 넣어주세요

chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

 

크롤링하는 과정을 먼저 보여드리면 👻

크롬을 연 다음 원하는 이미지를 검색하고 이미지를 클릭하고

크게 뜬 이미지의 주소를 가져오는 형식입니다

가져온 사진을 특정 폴더에 저장시켜서

확인하는 것 까지 가능하게 해놓았습니다

코드는 아래와 같습니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
import os
a=input("검색할 키워드를 입력하세요 : ")
b=int(input("개수 : "))
driver = webdriver.Chrome()
driver.get('http://www.google.co.kr/imghp?hl=ko')
elem = driver.find_element_by_name("q")
elem.send_keys(a)
elem.send_keys(Keys.RETURN)
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")
count = 0
for image in images:
try:
image.click()
time.sleep(2)
imgUrl = driver.find_element_by_xpath("/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div[1]/div[1]/div/div[2]/a/img").get_attribute("src")
urllib.request.urlretrieve(imgUrl, "imgfile/" + a + str(count) + ".jpg")
count += 1
if count == b:
break
except:
pass
driver.close()
cs

코드로는 26줄 import를 빼면 20줄이면

크롬에서 이미지를 찾아서 다운받는 것 까지 간단하게 할 수 있습니다

궁금하신 점이나 도움이 되셨다면 댓글과 좋아요 부탁드릴게요 😃

공유하기

facebook twitter kakaoTalk kakaostory naver band