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)
- 코드를 작성하면서 테스트를 해보니 payload를 주었을 경우, 영화 목록이 10개만 가져올 수 있었음
- 그래서, 주석처리 후 파라미터를 직접 대입해서 처리해보니 전체 영화 목록이 있는 json 데이터를 받게 됨
- 함수의 인자(페이지수)는 임의로 줘도 되나(josn 데이터가 없으면 return시킴), 페이지수를 찾아서 주는 것이 좋을 듯.
1년 몇 개월 전에 짜 놓은 네이버 영화 평점 크롤링 소스 보기>>
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
openpyxl 엑셀 파일 확장자(.xls) 에러 해결하는 방법 (0) | 2022.04.10 |
---|---|
파이썬 소수 찾기 (0) | 2022.04.09 |
파이썬 GUI 모듈 tkinter 연습(쿠팡 파트너스 상품 링크 관리 프로그램 만들기) (0) | 2022.04.07 |
파이썬 truncate() 함수로 텍스트 파일 내용 삭제하기 (0) | 2022.04.07 |
로또 당첨번호 회차별 엑셀 저장(파이썬 크롤링) (0) | 2022.03.30 |
댓글