본문 바로가기
Python/파이썬 크롤링 예

파이썬 웹 크롤러 만들기 : 네이버 웹툰 전체 썸네일(이미지) 저장

by 워니 wony 2019. 5. 9.

(*주의* 웹크롤러의 경우 다른 사람의 저작물을 저장하여 사용하게 되기 때문에 상업적 이용 시 문제가 될 수 있음)

 

네이버 웹툰에서 많은 웹툰이 게재되어 있다.

이미지를 저장하는 웹 크롤러를 교육용으로 만들어봤다.

웹툰 별로 정보를 가져올 수 있지만 이미지만 추출 한 후 이미지를 컴퓨터에 저장하는 크롤러를 만들고자 한다. 

파일처리가 들어가기 때문에 어렵다고 생각할 수 있지만, 파이썬의 경우 파일처리가 어렵지 않기 때문에 20줄 이하로 만들 수 있다.

 

 

 

네이버 웹툰 이미지 저장 크롤러

  • requests를 활용하여 내가 이미지를 가져오고자 하는 곳의 정보를 가져오기
  • 해당 정보를 기준으로 BeautifulSoup으로 해당 위치의 이미지 주소를 찾기
    • img 태그를 찾아서 scr 속성 안에 쓰여져 있는 정보를 가져오면 이미지 주소가 된다.
  • 해당 이미지 URL을 requests.get( )으로 content를 가져오고, 해당 content를 파이썬 파일 처리로 저장한다.
    • 참고로 파일명에 특수 문자가 있는 경우 제대로 저장이 되지 않기 때문에 글자 전처리를 해야 한다.
    • file = open("img/+fname+".jpg" , "wb")
      • img 폴더에 전저리한 fname(파일명)으로 jpg확장자로 저장하라는 명령, wb는 바이너리파일을 쓰겠다는 파일 모드로 지정한 것, 이미지를 저장하고자 하는 경우에는 wb 모드를 명시해 줘야 한다.
    • file.write( img_con)
      • 지정한 파일명에 이미지 주소로 가져온 content를 쓰는 명령어
    • file.close( )
      • file 처리 완료 후 파일을 닫아 주는 명령어

 

import re
import requests
from bs4 import BeautifulSoup

url = "http://comic.naver.com/webtoon/weekday.nhn"
html = requests.get(url)
bs_html = BeautifulSoup(html.content,"html.parser")

thumb = bs_html.find_all("div",{"class":"thumb"})

for toon in thumb:
    img = toon.find("img")
    webtoon_info = re.findall('<img.+? src=.(.+?). title="(.+?)"',str(img))

    img_con = requests.get(webtoon_info[0][0]).content
    fname = webtoon_info[0][1]
    fname = fname.replace("?","")
    fname = fname.replace(".","")
    fname = fname.replace("!","")
    file = open("img/"+fname+".jpg","wb")
    file.write(img_con)
    file.close()
    print(webtoon_info[0][0], "이미지 저장 완료")

(결과)

 

ㅇ 지정한 폴더에 저장된 이미지(컴퓨터)

  • 파이썬으로 이미지 저장이 완료 된 후 해당 위치의 폴더로 이동하면 이미지가 저장된 것을 확인할 수 있다.
  • 다시한번 이야기 하지만 해당 이미지의 경우 저작권이 네이버에 있기 때문에 상업적 용도로 사용 시 문제가 될 수 있음을 참고해야 한다.

반응형

댓글