코딩 ( 프로그래밍 )/파이썬 응용
파이썬 - 웹 크롤링을 이용하여 최신 팟캐스트 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 환경에서 테스트 되었습니다.
✔ 전체 소스 다운받기