YOLO 알고리즘을 구현하기 위해서, 데이터 셋이 필요하였다.
많은 양의 데이터셋을 일일이 다운 받을 수 없었기에 이미지 크롤러를 만들어 보았다!!
Selenium을 이용하여, Google image로 부터 화재, 연기와 관련된 이미지를 가져오는 크롤러(crawler)를 만들고자 한다.
Crawler는 python3을 사용하여 제작하였으며, 소스코드 정보는 아래 블로그와 웹사이트를 참고해서 만들었다.
소스코드를 가져오기는 했지만, 몇 차례 오류 끝에 성공 했는데.....
오류가 난 부분을 정리하면 다음과 같다.
1. Python Selenium PermissionError: [WinError 5] 엑세스가 거부되었습니다.
아래 browser에서, browser = webdriver.Chrome('chromedriver 저장 경로/chromedriver.exe')
Chromedriver.exe를 추가했다.
from selenium import webdriver
browser = webdriver.Chrome('chromedriver 저장 경로/chromedriver.exe')
browser.get('https://www.google.com')
browser.close()
2. 코드는 돌아가는데, 이미지 다운이 되지 않았다...이 부분에 대하여 오류 해결 방법은 다음과 같다.
전체 코드 중 header에 해당하는 코드에서 크롬 버전을 내 컴퓨터에 맞는 버전으로 수정 했다.
크럼 버전은 크롬에서 설정에 들어가면 확인 가능하다.
header={'User-Agent':"Chrome/79.0.3945.36"}
3. 전체 코드는 다음과 같다.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import json
import os
import urllib.request
#찾고자 하는 검색어를 url로 만들어 준다.
searchterm = 'fire smoke'
url = "https://www.google.com/search?q="+searchterm+"&source=lnms&tbm=isch"
# chrom webdriver 사용하여 브라우저를 가져온다.
browser = webdriver.Chrome('chromedriver 저장 경로/chromedriver.exe')
browser.get(url)
# User-Agent를 통해 봇이 아닌 유저정보라는 것을 위해 사용
header={'User-Agent':"Chrome/79.0.3945.36"}
counter = 0
succounter = 0
print(os.path)
if not os.path.exists(searchterm):
os.mkdir(searchterm)
for _ in range(500):
browser.execute_script("window.scrollBy(0,10000)")
for x in browser.find_elements_by_xpath('//div[contains(@class,"rg_meta")]'):
counter = counter + 1
print("Total Count:", counter)
print("Succsessful Count:", succounter)
print("URL:",json.loads(x.get_attribute('innerHTML'))["ou"])
img = json.loads(x.get_attribute('innerHTML'))["ou"]
imgtype = json.loads(x.get_attribute('innerHTML'))["ity"]
try:
path = os.path.join(searchterm , searchterm + "_" + str(counter) + "." + imgtype)
urllib.request.urlretrieve(img, path)
succounter = succounter + 1
except:
print("can't get img")
print (succounter, "succesfully downloaded")
browser.close()
4. 코드가 잘 실행되고 나면, 폴더에 사진들이 다운되어 있는 것을 확인 가능하다.
소스코드 참고 사이트:
1. https://jeongmin-lee.tistory.com/4?category=765520
2. https://j-remind.tistory.com/61
3. https://gist.github.com/genekogan/ebd77196e4bf0705db51f86431099e57
'학문과 실천하는 삶 > 공부, 해야지' 카테고리의 다른 글
[YOLOv3-Darknet] Windows10에서 YOLO v3 실행 해보기 총 정리 (2) (0) | 2020.01.14 |
---|---|
[YOLOv3-Darknet] Windows10에서 YOLO v3 실행 해보기 총 정리 (1) (0) | 2020.01.14 |