코딩 ( 프로그래밍 )/파이썬 응용

파이썬 - 웹 크롤링을 이용하여 최신 팟캐스트 mp3 파일 다운받기

IDMango 2020. 7. 25. 13:11

 

* 파이썬의 웹 크롤링을 이용하여 내가 선택한 최신 팟케스트의 mp3파일을 다운받는 서비스를 만들어 보겠습니다.

 

* 이프로그램을 윈도우에서 스케쥴링을 걸거나 리눅스 시스템의 경우 crontab에 추가하면 자동화 할수 있습니다.

 

   팟빵의 유명 팟케스팅 ( 김어준의 뉴스공장에 신규로 등록된 mp3 다운받기 )

   

   대상 사이트 소스 확인

 

  http://www.podbbang.com/ch/12548

 

  - 크롬브라우저에서 F12를 클릭하여 소스를 확인하고 대상위치 코드를 확인합니다.

 

 

   목록조회 JSON 테스트

 

   우선 아래 코드를 파일로 생성한다음 실행해보면

   목록이 JSON 형식으로 출력됩니다.

 

import requests
import json
 
s_url = "http://www.podbbang.com/_m_api/podcasts//12548/episodes?episode_id=0&sort=desc&offset=0&limit=8&with=summary&cache=0"
 
req = requests.get(s_url)  # URL을 호출하여 JSON 파일을 읽어 옵니다.
data = json.loads(req.content.decode())  # 결과를 Decode하여 json 파싱을 합니다. 
 
print(data)
 
 
cs

 

   첫번째 항목의 mp3 다운받기

 

  - 아래 소스를 적용해 봅니다.

import requests
import json
import pathlib
import os
 
# 목록 추출 URL
s_url = "http://www.podbbang.com/_m_api/podcasts/12548/episodes?episode_id=0&sort=desc&offset=0&limit=8&with=summary&cache=0"
 
g_folder = "/var/www/html/mp"   # 다운받을 폴더 경로
headers = {'Referer''http://www.podbbang.com/ch/7290'}
 
# 실제 파일 다운로드 함수
# ----------------------------------------------------------------------
def download(url, file_name, reff):
    with open(file_name, "wb"as file:   # open in binary mode
        response = requests.get(url, headers=reff)               # get request
        file.write(response.content)      # write to file
# ----------------------------------------------------------------------
# 다운로드 호출 함수
# ----------------------------------------------------------------------
# URL , ID, 제목
def get_mp3(s_url, s_id, s_title):
    file = pathlib.Path( g_folder + "/" + s_id + ".mp3")
    if file.exists():
        print ("File exist")
    else:
        download(s_url, g_folder + "/" + s_id + ".mp3", headers )
 
 
# Main 부분
# ----------------------------------------------------------------------
req = requests.get(s_url)  # URL을 호출하여 JSON 파일을 읽어 옵니다.
data = json.loads(req.content.decode())  # 결괄,ㄹ Decoe 사여 json 파싱을 합니다.
 
print(data)
 
for i, item in enumerate(data['data']): # cont['data']['children']:
    if i==0:
        get_mp3(item['enclosure']['url'], str(item['id']), str(item['title']) )
 
 
# ----------------------------------------------------------------------
cs

 

*  소스의 g_folder 부분을 자신의 환경에 맞게 다운로드 받을 부분으로 수정해주세요. 

   g_folder = "/var/www/html/mp" # 다운받을 폴더 경로

 

* 그런다음 본 내용을 파일로 저장하여 

  phthon3 p_podbbang_dn.py 로 실행하면...

  목록이 출력되고 /var/www/html/mp 폴더에 mp3 파일이 다운로드 됩니다.

 

* 본 소스는 라즈베리 파이의 python3  환경에서 테스트 되었습니다. 

 

 

   전체 소스 다운받기

 

p_podbbang_dn.py
0.00MB