본문 바로가기
코딩

파이썬_Python_이미지크롤링_최신IT및AI기술의핵심

by 행운월드 2024. 9. 15.
반응형

 

 

1. 파이썬의 인기와 중요성

파이썬은 간결하고 읽기 쉬운 문법 덕분에 많은 개발자들 사이에서 인기를 끌고 있는 프로그래밍 코딩 언어입니다. 특히 데이터 과학, 인공지능(AI), 머신러닝(ML) 분야에서 널리 사용되고 있습니다. 파이썬의 다양한 라이브러리와 프레임워크는 복잡한 작업을 쉽게 처리할 수 있게 도와줍니다.

 

 

2. 파이썬은 언제 왜 탄생하였는가?

Python은 1991년에 네덜란드의 프로그래머 귀도 반 로섬(Guido van Rossum)에 의해 처음 만들어졌습니다. 그가 Python을 만든 이유는, 당시에 복잡한 프로그래밍 언어들보다 더 읽기 쉽고, 직관적이고, 빠르게 개발할 수 있는 언어가 필요하다고 느꼈기 때문입니다. 1980년대 말, 반 로섬은 네덜란드 국립 연구소(CWI)에서 ABC라는 교육용 프로그래밍 언어 개발에 참여하고 있었습니다. 그런데, ABC는 몇 가지 한계가 있었고, 반 로섬은 ABC의 장점을 살리면서도 더 유연하고 실용적인 언어를 만들고 싶어 했다. 그래서, Python프로그래밍 언어가 만들어졌습니다. Python은 프로그래머가 코드를 쉽게 읽고 이해할 수 있게 단순하고 명확한 문법을 제공하여, 코드 작성 시간을 줄여주고, 더 빠르게 개발할 수 있는 코딩언어입니다. 웹 개발과, 데이터 분석, 인공지능(AI), 자동화 등 여러 분야의 기술을 개발하는데에 쓰이고 있습니다. 그리고, 다른 프로그래밍 언어와 쉽게 연동될 수 있는 구조를 지니고 있는 특징이 있습니다. Python이라는 이름은 귀도 반 로섬이 좋아하던 영국의 코미디 그룹 몬티 파이썬(Monty Python)에서 따온 것으로, 재미있고 유쾌한 개발 환경을 지향한 그의 의도가 반영되었습니다. 코딩언어를 개발하는 기준이 재미와 유쾌함이어서 그런지, 인상이 얼핏 보면 산타클로스 할아버지와 비슷합니다.

 

3. 데이터 과학에서의 파이썬

데이터 과학은 대량의 데이터를 분석하고 인사이트를 도출하는 과정을 말합니다. 파이썬은 데이터 분석에 필요한 다양한 라이브러리가 있습니다.(예: Pandas..)

 

* 예시 코드: Pandas를 사용한 데이터( 엑셀 CSV 형식 ) 분석 *

import pandas as pd

# CSV 파일 읽기
data = pd.read_csv('data.csv')

# 데이터 프레임의 첫 5행 출력
print(data.head())

# 특정 열의 평균값 계산
average = data['column_name'].mean()
print(f'Average: {average}')
 

4. 인공지능과 머신러닝에서의 파이썬

파이썬은 AI와 ML(Machine Learning) 모델을 구축하는 곳에 매우 유용하게 쓰입니다. TensorFlow, Keras, PyTorch와 같은 라이브러리는 복잡한 신경망을 쉽게 구현할 수 있게 도와줍니다.

 

* 예시 코드: TensorFlow를 사용한 간단한 신경망 *

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 모델 생성
model = Sequential([
    Dense(128, activation='relu', input_shape=(784,)),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# 모델 컴파일
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 모델 요약 출력
model.summary()

 

 

5. 자연어 처리(NLP)에서의 파이썬

자연어 처리는 텍스트 데이터를 이해하고 처리하는 기술입니다. 파이썬은 NLP 작업을 위한 강력한 도구들을 제공하고 있습니다.

 

* 예시 코드: NLTK를 사용한 텍스트 처리 *

import nltk
from nltk.tokenize import word_tokenize

# 텍스트 데이터
text = "파이썬은 매우 강력한 프로그래밍 언어입니다."

# 단어 토큰화
tokens = word_tokenize(text)
print(tokens)
 

 

6. 컴퓨터 비전에서의 파이썬

컴퓨터 비전은 이미지나 비디오 데이터를 분석하고 이해하는 기술입니다. OpenCV와 같은 라이브러리는 컴퓨터 비전 작업을 쉽게 처리할 수 있게 해 줍니다.

 

* 예시 코드: OpenCV를 사용한 이미지 처리 *

import cv2

# 이미지 읽기
image = cv2.imread('image.jpg')

# 이미지 그레이스케일로 변환
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 그레이스케일 이미지 저장
cv2.imwrite('gray_image.jpg', gray_image)

 

 

7. 구글 이미지 크롤링

 

* 예시 코드: Selenium을 사용한 구글 이미지 크롤링 *

# 라이브러리 임포트
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
import os

# 검색어와 크롤링할 이미지 수 입력
search_query = '강아지'
crawl_num = 5

# 이미지 저장할 폴더 생성
if not os.path.isdir('images'):
    os.makedirs('images')

# 크롬 웹드라이버 설정
driver = webdriver.Chrome()
driver.get('https://www.google.com/imghp?hl=ko')

# 검색어 입력
search_box = driver.find_element_by_name('q')
search_box.send_keys(search_query)
search_box.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)
        img_url = driver.find_element_by_xpath(
            "//*[@id='Sva75c']/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img"
        ).get_attribute('src')
        urllib.request.urlretrieve(img_url, f'./images/img{count}.jpg')
        print(f'Image saved: img{count}.jpg')
        count += 1
        if count > crawl_num:
            break
    except:
        pass

driver.close()
print('Image Crawling is done.')

 

*selenium: 웹 브라우저 자동화를 위한 라이브러리입니다. * webdriver: 브라우저를 제어하는 데 사용됩니다. * Keys: 키보드 입력을 시뮬레이션합니다. * time: 지연을 설정하는 데 사용됩니다. * urllib.request: URL에서 데이터를 다운로드하는 데 사용됩니다. * os: 파일 및 디렉터리 작업을 위한 라이브러리입니다. * images라는 이름의 폴더를 생성합니다. 폴더가 이미 존재하는 경우 생성하지 않습니다. * Chrome 브라우저를 열고 구글 이미지 검색 페이지로 이동합니다. * 검색어를 입력하고 검색을 실행합니다. * 페이지가 끝까지 스크롤될 때까지 스크롤을 내립니다. 끝까지 스크롤되면 '더 보기' 버튼을 클릭하여 더 많은 이미지를 로드합니다. * 페이지에서 이미지를 찾아 클릭합니다. 클릭 후, 이미지의 URL을 가져와서 지정한 폴더에 이미지를 저장합니다.  * 브라우저를 닫고 크롤링 작업이 완료되었다는 메시지를 출력합니다.

 

 

8. 이미지 크롤링(네이버)

이미지 크롤링은 웹에서 이미지를 자동으로 다운로드하는 작업입니다. 파이썬의 BeautifulSoup과 urllib 라이브러리를 사용하면 쉽게 구현할 수 있습니다.

 

* 예시 코드: BeautifulSoup를 사용한 이미지 크롤링 *

from bs4 import BeautifulSoup
from urllib.request import urlopen, urlretrieve
from urllib.parse import quote_plus

# 검색어와 크롤링할 이미지 수 입력
search_query = '강아지'
crawl_num = 5

# URL 설정
base_url = 'https://search.naver.com/search.naver?where=image&sm=tab_jum&query='
url = base_url + quote_plus(search_query)

# HTML 가져오기
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

# 이미지 태그 찾기
img_tags = soup.find_all(class_='_img')

# 이미지 다운로드
n = 1
for img in img_tags:
    img_url = img['data-source']
    urlretrieve(img_url, f'./images/img{n}.jpg')
    n += 1
    if n > crawl_num:
        break

print('Image Crawling is done.')

이 코드는 네이버 이미지 검색 결과에서 강아지 이미지를 5장 다운로드합니다. BeautifulSoup을 사용하여 HTML을 파싱하고, 이미지 태그를 찾아 이미지를 저장합니다.

 

파이썬은 다양한 IT 및 AI 기술에서 매우 중요한 역할을 하고 있으며, 그 활용 범위는 계속해서 확장되고 있습니다. 데이터 과학, 인공지능, 자연어 처리, 컴퓨터 비전 등 다양한 분야에서 파이썬을 활용하여 더 나은 결과를 얻을 수 있습니다.