상세 컨텐츠

본문 제목

Python 으로 구글 이미지 데이터 크롤링하기

Tech/AI Study

by Enjoy Something 2019. 8. 7. 20:01

본문

 

 

 

 

크롤링을 위해 셀레늄 라이브러리를 설치해줍니다.

 

시작 + r 을 누른 뒤 cmd 를 치면 콘솔 창이 나옵니다.

 

콘솔 창에 설치 명령어를 입력해줍니다.

 

 

pip install selenium

 

 

설치가 완료 되었다면 selenium 라이브러리를 사용할 수 있습니다

 

 

 

 

 

 

 

이제 크롬에서 사진을 받아오기 위해 크롬과 크롬 드라이버를 다운로드 해줍니다.

 

크롬 다운로드는 아래에서 할 수 있습니다.

 

 

https://sites.google.com/a/chromium.org/chromedriver/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

sites.google.com

 

 

 

 

 

 

이 전에 크롬 버전을 확인하고 맞는 버전으로 다운로드 해줍니다.

 

크롬 오른쪽 상단에 메뉴 버튼을 누르시고 

 

도움말 > Chrome 정보에 들어가면 무슨 버전인지 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자신의 OS 에 맞게 다운로드 합니다.

 

저는 최신 윈도우 버전으로 받았습니다.

 

 

 

 

이제 다운로드를 하고 압축을 풀면 chromdriver.exe 라는 파일이 나옵니다.

 

이 파일을 저장하고 경로를 파악해서 셀레늄을 사용 시에 입력합니다.

 

절대 경로 또는 상대 경로로 이용을 합니다.

 

 

 

 

 

 

 

 

이제 파이참에서 코딩을 시작합니다.

 

File > Open 에서 크롬드라이버가 있는 폴더를 선택해줍니다.

 

 

 

 

 

 

 

이제 소스코드를 쳐봅니다.

 

 

 


# 내장함수
from urllib.request import urlopen
# 명령행 파싱 모듈로 argparse 모듈 사용
import argparse
# request => 웹에 요청한 결과 값을 얻어올 수 있는 모듈
import requests as req
# 웹에다 요청한 결과를 보내는 모듈
from bs4 import BeautifulSoup


parser = argparse.ArgumentParser()
#argparse 모듈에 ArgumentParse() 함수 사용하여 parser 생성

parser.add_argument("-name", "--people", required=True)
# 명령행 옵션을 지정하기 위해 사용. 명령행 옵션 인자는 -name으로 지정함

args = parser.parse_args()
#parse에 add_argument()함수 사용해 args 인스턴스생성

people = args.people
# 명령행에서 받은 인자값을 people에 값을 넘겨줌


def main():

# 구글 url https://www.google.co.kr/search?q=%EB%B2%A4&tbm=isch

url_info = "https://www.google.co.kr/search?"

#params에다 딕션을 넣어줌
params = {
#명령행에서 받은 인자값을 people로 넣어줌
"q" : people,
"tbm":"isch"
}
#url을 요청하는 파싱값
html_object = req.get(url_info,params) #html_object html source 값

if html_object.status_code == 200:
#페이지 status_code 가 200 일때 2XX 는 성공
bs_object = BeautifulSoup(html_object.text,"html.parser")
#인스턴스를 생성
img_data = bs_object.find_all("img")
#인스턴스에서 find_all 이라는 함수에 img 태그가 있으면 img_data에 넣어줌

for i in enumerate(img_data[1:]):
#딕셔너리를 순서대로 넣음
t = urlopen(i[1].attrs['src']).read()


filename = "img_"+str(i[0]+1)+'.jpg'


with open(filename,"wb") as f:


f.write(t)
print("Img Save Success")


if __name__=="__main__":
main()



 

 

 

 

 

코드를 작성했으면 콘솔 창에 들어갑니다.

 

실행을 위해 명령행 인자를 써줘야 합니다.

 

 

 

 

 

 

 

 

 

 

 

Tips:

 

 

ModuleNotFoundError: No module named 'requests'

 

해당 모듈을 pip로 설치해주면 되는데, pip.exe 환경에 path 가 설정된 곳에서 설치를 해줍니다.

 

pip install requests

 

 

 

 

 

관련글 더보기

댓글 영역