머신러닝을 공부하는 도중에 Teachable machine 이라는 구글의 무료 머신러닝 서비스를 발견하였다.
그 내부에는 웹캡 또는 이미지파일을 업로드하여 학습시키는 방식이였는데,
정교하게 학습을 시키기위해선 그만큼 많은 이미지 파일이 필요하게 되었다.
그리고 이미지 파일을 구하러 다니다가 귀찮음을 느끼고 이미지 파일 크롤링 코드를 작성하게되었다.
인터넷에 데이터가 방대해지면서 우리는 그걸 활용할 필요성이 높아졌습니다. 그런 정보들을 우리가 분석하기 쉽고 활용하기 쉽게 끔 데이터를 수집하는 행위를 크롤링(Crawling) 이라고 하고 크롤링하는 프로그램을 크롤러(Crawler) 라고 합니다.
직접 작성한 것이 아니라 구글링을 통해 여러 코드를 찾아보았고,
그 중에서 기준이 될 코드를 하나잡고 내 환경에서 동작하도록 바꾸었다.
https://m.blog.naver.com/fkdldjs60/221874567247
# 과정
대부분은 위 블로그를 참고하여 코드를 작성하였고, 오류가 발생하는 부분을 수정했다.
1. webdriver.Chrome() 오류
다른 사람들은 괄호 내부에 chromedriver.exe 경로를 지정하지 않아도 제대로 실행되는 것 같았다.
그러나 나는 지정된 파일을 찾을 수 없다는 메세지가 발생하여 chromedriver를 검색하고 설치한 다음,
설치 경로를 지정해주었다.
2. BeautifulSoup 모듈의 select 함수
언급한 모듈의 selecet 함수는 css에서 사용되는 클래스명, 태그명 등을 입력하여
입력된 태그명을 지닌 html코드를 긁어오는 기능을 한다.
이 때 대부분은 클래스명을 긁어오는 방식을 채택하였는데,
나는 잘 안되어서 그냥 img 태그를 긁어오는 방식을 이용하였다.
# Source Code
* 아래 소스코드가 존재하는 곳에 download라는 폴더가 존재 해야 한다
from urllib.request import urlretrieve
from urllib.parse import quote_plus # korean support
from bs4 import BeautifulSoup as BS # Essential module
from selenium import webdriver # Google crolling
keyword = input("Input keyword: ")
i_URL = f'https://www.google.com/search?q={quote_plus(keyword)}&sxsrf=ALeKk00OQamJ34t56QSInnMzwcC5gC344w:1594968011157&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjXs-7t1tPqAhVF7GEKHfM4DqsQ_AUoAXoECBoQAw&biw=1536&bih=754'
driver= webdriver.Chrome('C:\chromedriver\chromedriver_win32\chromedriver.exe')
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver.get(i_URL)
html = driver.page_source
soup = BS(html,features="html.parser")
img = soup.select('img')
i_list = []
count = 1
print("Searching...")
for i in img:
try:
i_list.append(i.attrs["src"])
except KeyError:
i_list.append(i.attrs["data-src"])
print("Downloading...")
for i in i_list:
urlretrieve(i,"download/"+keyword+str(count)+".jpg")
count+=1
driver.close()
print("FINISH")
'SecurityFactorial > Chat Filtering (X)' 카테고리의 다른 글
#2. 텐서플로우 사용법 익히기 1일차 (0) | 2020.07.29 |
---|---|
#1. 머신러닝 체험기 (0) | 2020.07.17 |
두번째 회의 (0) | 2020.07.11 |
채팅 프로그램 분석 2차 회의 (0) | 2020.07.10 |
웹채팅 서비스 만들기 (1) | 2020.07.06 |