티스토리 뷰

다룰 내용

 1. 사진 크롤링을 위한 기본 모듈 및 라이브러리 소개

 2. 사이트 접속 및 검색어 입력

 3. 원하는 데이터 추출

 5. 예외 컨트롤

 4. 해당 데이터 저장

오늘 배울 개념

 1. "30초만에 신문기사 크롤링하기"와 동일

 2. try/ except

 

오늘 크롤링할 사진

심장건강에 안좋은 녀석들

STEP 1

 크롤링을 위한 모듈과 라이브러리를 불러온다.

import requests
import urllib.request
import urllib.error
from urllib.error import URLError, HTTPError
from bs4 import BeautifulSoup
  • request = python에서 HTTP요청을 서버로 보내고(request) 그 대답(respnse)을 객체로 받아올 수 있는 모듈
  • BeautifulSoup = HTML문서 또는 XML문서에서 특정 내용을 선택하기 위해 사용하는 python 패키지
  • urllib = python에서 웹과 관련된 데이터를 손쉽게 이용할 수 있도록 해주는 '라이브러리'
    • urllib.request = url을 통해 여러가지 요청이 가능 (이번에는 다운로드 요청을 할 예정)
    • urllib.error = url관련 에러를 다룸

STEP 2

 세션을 만든다.

#세션만들기 
s=requests.session()

 

STEP 3

사이트에 접속하여 검색 URL을 복사한다.

그냥 복사

그리고 아래와 같이 파이썬에 만들어놓은 세션에서 해당 URL로 서버에 접근을 시도한다.

url = "https://www.google.co.kr/search?q=%EA%B7%80%EC%97%AC%EC%9A%B4%EB%8F%99%EB%AC%BC&tbm=isch&ved=2ahUKEwiUg7fUz-LpAhUEHKYKHZF7BloQ2-cCegQIABAA&oq=%EA%B7%80%EC%97%AC%EC%9A%B4%EB%8F%99%EB%AC%BC&gs_lcp=CgNpbWcQAzICCAAyAggAMgIIADICCAAyAggAMgIIADICCAAyAggAMgIIADICCAA6BAgjECc6BwgjEOoCECdQtgxY9ylghixoBXAAeAKAAaMBiAH3EJIBBDAuMTeYAQCgAQGqAQtnd3Mtd2l6LWltZ7ABCg&sclient=img&ei=pAHWXpShFIS4mAWR95nQBQ&bih=1231&biw=894"
response = session.get(url)
print(response)

#<Response [200]>이 떳다면 성공!!

 

STEP 4

해당 서버에 성공적으로 접속했다면,

BeautifulSoup객체를 만들어 이미지 파일을 찾는다.

soup = BeautifulSoup(response.text,'html.parser')	 #soup 객체를 만든다 
img = soup.select("img")				 #만들어진 soup객체에서 img태그인 녀석들을 찾는다

 

STEP 5

찾아낸 이미지 파일들을 다운로드 한다.

  --> 잘 되면 끝

  --> 에러가 났다면 STEP 6로!

n=0
for i in img:
    src = i['src']
    urllib.request.urlretrieve(src, str(n) + '.jpg')
    n = n+1
    
    # 잘 되거나 (다운로드는 python파일이 들어있는 폴더에 다운로드 될것이다)
    # 에러가 발생할 것이다

 

STEP 6

에러가 났다면, try / except 구문을 활용하여 예외 상황을 제외하고 파일을 다운로드 한다.

n=0
for i in img:
    src = i['src']
    try:
        urllib.request.urlretrieve(src, str(n) + '.jpg')
        
    except ValueError:						#url 형식이 잘못된 경우
        print('url양식이 잘못되었습니다.')
        
    except HTTPError:						#불량 url이라 접속이 불가능한 경우
        print('url주소에 접근 할 수 없습니다')
    n = n+1

크게 이렇게 두가지 오류가 발생하기 때문에, 오류를 제외하고 이미지 다운로드가 가능해진다.

 

결과물

:)

만약, 검색어를python에서 직접 입력하고 싶다면? (업데이트 완료)

 

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함