본문 바로가기
코딩 연습/코딩배우기

다음 영화 이미지 다운로드 - 지식인 문제 해결(파이썬 크롤링 문의)

by good4me 2022. 4. 8.

goodthings4me.tistory.com

'다음 영화'에서 영화관의 정보에 대해 파이썬 크롤링을 하는 문제 해결 코드임. json 데이터에서 영화 제목, 이미지 주소를 가져오고, 영화 이미지 다운로드하는데 폴더가 없으면 만들어서 저장하는 작업을 수행하는 문제임

 

 

다음(daum) 영화 제목 추출과 이미지 다운로드 저장하기

 

문제 해결 소스 코드

import requests
from bs4 import BeautifulSoup
import json
import os
from datetime import date

# daum_movie_url = 'https://movie.daum.net/premovie/theater'
# json_url = 'https://movie.daum.net/api/premovie?page=1&size=20&flag=Y'

def daum_movie(pages):

    for page in range(1, pages + 1):
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
        url = f'https://movie.daum.net/api/premovie?page={page}&size=20&flag=Y'
        # url = 'https://movie.daum.net/api/premovie'
        # payload = {
        #     'page': page,
        #     'size': 20,
        #     'flag': 'Y'
        # }

        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            print(type(response.text))
            data = json.loads(response.text)
            contents = data['contents']
            contents_len = len(contents)
            print(contents_len)

            if not contents_len:
                return False

            folder_name = f'./theater_img/{date.today()}'
            if not os.path.exists('./theater_img'):
                os.makedirs(folder_name)

            movie_info = []
            for content in data['contents']:
                print(content['titleKorean'])
                print(content['mainPhoto']['imageUrl'])
                title = content['titleKorean']
                movie_image = content['mainPhoto']['imageUrl']
                movie_info.append(title + '$' + movie_image)

                print(folder_name + f'/{title}.jpg')
                with open(folder_name + f'/{title}.jpg', 'wb') as f:
                    image = requests.get(movie_image, headers=headers).content
                    f.write(image)

            # print(movie_info)
        else :
            print(response.status_code)

daum_movie(4)

 

good4me.co.kr

 

- 코드를 작성하면서 테스트를 해보니 payload를 주었을 경우, 영화 목록이 10개만 가져올 수 있었음

- 그래서, 주석처리 후 파라미터를 직접 대입해서 처리해보니 전체 영화 목록이 있는 json 데이터를 받게 됨

- 함수의 인자(페이지수)는 임의로 줘도 되나(josn 데이터가 없으면 return시킴), 페이지수를 찾아서 주는 것이 좋을 듯.

 

 

1년 몇 개월 전에 짜 놓은 네이버 영화 평점 크롤링 소스 보기>>

 

 

파이썬 크롤링(Crawling) 연습 - 네이버 영화 평점/리뷰, 영화코드 추출

■ 네이버 영화 사이트에 있는 평점/리뷰의 제목과 평점을 추출하여 dict로 저장하고, 영화코드를 파일로 저장해보기 import urllib.request from bs4 import BeautifulSoup from itertools import count def get_..

goodthings4me.tistory.com

 

 

 

댓글