반응형
3월 초부터 해결 방법을 알지 못해 손을 놓고 있던 이미지 크롤링을 몇 일 전부터 계속 구글링했다.
뭐가 문제인지 정말 많이 찾아봤었는데 범인은 코랩이었나보다..
나는 정말 코랩이를 좋아했는데.. 편하고 인터넷으로 바로 켤 수 있고..
근데 코랩이에서 크롬 드라이브 경로를 넣어도 인식을 못했다.
혹시나 해서 주피터 노트북에 넣고 돌려보니 바로 진행되었다.
내 사라진 시간들은 나의 멍청함이 먹어 치웠나보다 ㅎㅎ
www.youtube.com/watch?v=1b7pXC1-IbE
조코딩님의 이미지 크롤링 자료를 2개 봤는데 다른 하나는 구글에서 막아놔서 사용이 불가능 했고,
셀레니움을 통한 크롤링은 사용이 가능했다.
# 크롬 드라이브를 다운받아야한다.
chromedriver.chromium.org/downloads
셀레니움을 설치한다.
!pip install selenium
다음은 코드이다.
from selenium import webdriver
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs
from urllib.parse import quote_plus
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
driver = webdriver.Chrome('C:\chromedriver_win32 (1)\chromedriver') # 여기에 크롬드라이브 다운로드 받은 경로를 입력한다.
driver.get("https://www.google.co.kr/imghp?hl=ko&ogbl")
elem = driver.find_element_by_name("q")
elem.send_keys("flying birds")
elem.send_keys(Keys.RETURN)
SCROLL_PAUSE_TIME = 1
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(SCROLL_PAUSE_TIME)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
try:
driver.find_element_by_css_selector(".mye4qd").click()
except:
break
last_height = new_height
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")
count = 1
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/div[1]/div[1]/div/div[2]/a/img').get_attribute("src")
urllib.request.urlretrieve(imgUrl, str(count) + ".jpg")
count = count + 1
except:
pass
driver.close()
13번째 줄에 검색하고자 하는 단어를 넣어주면 이미지 크롤링이 가능하다.
코드만 갖다 써도 되지만 셀레니움이라는 강력한 웹 자동화툴의 사용법을 배울 수 있으니 듣는 것을 추천한다.
크롤링을 이제 할 수 있으니까 드론과 새 구분하는 CNN도 프로잭트로 만들어봐야지!
시작이 반이라고 하는데 반보다 더 온 것 같다.
멈추지 말자.
728x90
반응형
'미니프로젝트' 카테고리의 다른 글
OpecCV를 통해 차선 인식하기 (0) | 2021.04.20 |
---|---|
CNN을 활용하여 드론과 새 분류하기 (4) | 2021.04.04 |
SVM을 통해 구매 가능성이 있는 고객 분류하기 (0) | 2021.04.01 |
공항 기상 시각화 (0) | 2021.04.01 |
인천 1호선 일자 및 시간대별 승하차 현황 시각화/prophet을 통한 승객 수요 예측 (0) | 2021.04.01 |