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

파이썬 웹 크롤링(Web Crawling) 알아보기 #8

by good4me 2020. 10. 26.

goodthings4me.tistory.com

 

■ 파이썬(Python) 크롤링 연습 - 팟빵 목록 추출하기

http://www.podbbang.com/
팟빵 채널(ex. 일빵빵 입에 달고 사는 기초영어) 선택 후, 우측 목록(파일 리스트) 페이지를 클릭하면 
Ajax처럼 작동하는데, 개발자도구(F12)로 Network 탭에서 해당 URL을 확인해보면 Json 형태를 확인할 수 있다.

Request URL: http://www.podbbang.com/_m_api/podcasts/7193/episodes
?offset=1&sort=pubdate:desc&episode_id=0&limit=8&with=summary&cache=0
# json 파일임

최소 파라미터 확인 결과,
http://www.podbbang.com/_m_api/podcasts/7193/episodes?offset=0

 

import requests
import json
import os
import re
from itertools import count

cnt = 0
stop = False
for offset in count(0):
    ch_url = 'http://www.podbbang.com/_m_api/podcasts/7193/episodes'
    params = {
        'offset': offset,
    }
    
    html = requests.get(ch_url, params = params)
    print(html)
    
    result_dict = json.loads(html.text)  # json --> dict
    
    # 총 개수를 얻기 위해  dict의 관련 요소 추출
    tot_count = result_dict['summary']['total_count']
    print(tot_count)  # 459
    
    for r in result_dict['data']:
        cnt += 1
        print(cnt)
        
        print(r['id'])
        print(r['title'])
        print(r['enclosure']['url'])  # .mp3 또는 .mp4
        print(r['enclosure']['length'])  # 용량
        print(r['duration'])  # 파일 실행 시간
        print(r['published_at'])
        
        # 정규표현식 re.sub('[]', '', 대상)를 통해 목록명의 특수문자 제거 후 파일명으로 사용
        title = re.sub('[*\|<>?:"/]', '', r['title'])
        
        # 파일 다운로드 위한 requests, 파일이름 짓기
        mp3_bin = requests.get(r['enclosure']['url']).content
        
        base_filename = os.path.basename(r['enclosure']['url'])
        filename = '{}_{}_{}'.format(r['id'], title, base_filename)
        print(filename)
        
#        with open(filename, 'wb') as f:
#            f.write(mp3_bin)
    
        
        print()
        
        if cnt >= 3:  # cnt >= tot_count: 할 경우 전체 파일 대상이 됨
            stop = True
            break
        
    if stop:
        break

good4me.co.kr

 

[실행 결과]

<Response [200]>
459
1
22534026
일빵빵
https://file.ssenhosting.com/data1/tomato2u/letsilbangbang.mp4
6650555
00:00:39
2018-02-14 20:51:05
22534026_일빵빵_letsilbangbang.mp4

2
22274594
(기초영어특별판완강TEST) 나의 대답 실력은?
https://file.ssenhosting.com/data1/tomato2u/specialtest.mp3
31355089
00:21:46
2017-05-15 11:22:03
22274594_(기초영어특별판완강TEST) 나의 대답 실력은_specialtest.mp3

3
22258606
(특별판 제60강) NATIVE 원음 591-600
https://file.ssenhosting.com/data1/tomato2u/native60.mp3
6632385
00:04:36
2017-04-23 15:51:59
22258606_(특별판 제60강) NATIVE 원음 591-600_native60.mp3

 

[참고] askcompany.kr - 크롤링 차근차근 시작하기

 

댓글