Web Crawling(웹 크롤링)_11번가 베스트셀러 이미지 (python)

juyeon·2022년 8월 7일
0

크롤링

목록 보기
9/13

11번가 베스트셀러 이미지

절차

import pandas as pd
import requests, os 
  • os: 컴퓨터 파일 시스템을 다루는 패키지: 디렉토리 생성, 파일 삭제/복사/이동 등등

1. 디렉토리를 만들자

  • 디렉터리 존재 유무를 확인하는 코드
os.path.exists("best_11st_data") # false라고 나옴
path = "best_11st_data" # 추후 수정을 위해 따로 변수로 빼놓자
if not os.path.exists(path): # 디렉토리가 존재하지 않으면 True
    os.makedirs(path)

2. csv 파일을 로드

: 여기에는 이미지 url이 들어있음(image link)

best_11st_img = pd.read_csv("best_11st.csv")
  • 서버로 이 이미지 url을 request 하면 이미지 파일을 response 받을 수 있음

3. 이미지만 저장하기

  • requests 패키지를 이용해서 다운로드 받을것임
  • df.iterrows()
    : 데이터프레임의 행 반복하기. DataFrame의 각 행의 정보를 담은 객체
  • filename = "0" * (3 - len(str(idx))) + str(idx) + ".png"
    : 제목을 파일이름하면, 특수문자가 들어있을 경우 에러가 남.
    : 그래서 숫자 형태로 저장
    : 자리수를 맞춰줘야함. 안그러면 0 다음에 10이 나와버리는 불상사가..
  • wb: 파일 저장할 때(write binary의 약자), rb: 파일 읽어올 때
  • text 데이터가 아니니까 content라고 쓰는게 더 맞음
for idx, data in best_11st_img[:5].iterrows():
    filename = "0" * (3 - len(str(idx))) + str(idx) + ".jpg"
    response = requests.get(data["img"])
    # 만약 함수가 아니라 따로 할 때, 이 단계에서 response.text 하면 이상하게 보임.
    # 왜냐면 문자로 인코딩해서 보내주기 때문에 깨져서 보임
    with open(f"{path}/{filename}", "wb") as file:
        file.write(response.content)

4. 이미지 보기(display image)

  • pillow 패키지를 많이 사용: 이미지 데이터 전처리 할 때
from PIL import Image as pil
pil.open(f"{path}/004.jpg")

profile
내 인생의 주연

0개의 댓글