크롤링이란 웹 페이지를 가져와서 데이터를 사용자의 목적과 필요에 맞게
추출해 내는 행위입니다
검색엔진에서도 거의 필수적으로 사용하는데
검색엔진에서 사용하는 이유는 웹상의 다양한 정보들을 자동으로 검색하고 색인하기 위해서 입니다
지금 운영되고 있는 이 블로그도 여러 검색엔진에서 크롤링되고 있다고 볼 수 있습니다
파이썬이 이 분야에서는 강점이 많습니다
아마 비전공자들도 사용하기 별로 어렵지 않을 정도로 배우기가 쉬운 언어이고
크롤링 자체도 그렇게 어렵지 않게 배울 수 있는 기술입니다
오늘은 sellenium 라이브러리를 이용해서
구글에서 이미지를 검색해서 그 이미지를 가져오는 것까지 해보도록 하겠습니다
pypi.org/project/google-image-downloader/
원래는 google-image-downloader 라는 것으로 크롤링이 가능했으나
구글에서 이를 막아버려서 직접 브라우저를 컨트롤 하는 방법으로 해야합니다
우선 selenium 이 필요하므로
pip install selenium
라이브러리를 먼저 설치해 주세요
그리고 버전에 맞게 크롬 드라이버를 설치해 주세요
다른 브라우저를 사용하시면 그 브라우저에 맞게 드라이버를 찾으셔서 다운받으시면 됩니다
다운 받은 드라이버는 프로젝트 폴더 안에 넣어주세요
chromedriver.chromium.org/downloads
크롤링하는 과정을 먼저 보여드리면 👻
크롬을 연 다음 원하는 이미지를 검색하고 이미지를 클릭하고
크게 뜬 이미지의 주소를 가져오는 형식입니다
가져온 사진을 특정 폴더에 저장시켜서
확인하는 것 까지 가능하게 해놓았습니다
코드는 아래와 같습니다
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줄이면
크롬에서 이미지를 찾아서 다운받는 것 까지 간단하게 할 수 있습니다
궁금하신 점이나 도움이 되셨다면 댓글과 좋아요 부탁드릴게요 😃