오디오 데이터를 원하지만 일괄 다운로드할 수 없으면 어떻게 합니까? 파이썬이 당신에게 풀 수 있는 비법을 가르쳐줍니다~

머리말

안녕하세요! 안녕하세요 여러분 마왕입니다~

환경 소개

  • 파이썬 3.8
  • 파이 참

모듈 사용

  • 요청 >>> 데이터 요청 모듈 타사 모듈 pip 설치 요청
  • re >>> 정규식 구문 분석 데이터 내장 모듈을 설치할 필요가 없습니다.

win + R Enter cmd 설치 명령을 입력하십시오 pip install 모듈 이름이 널리 사용되는 경우 국내 미러 소스를 전환하기 위해 네트워크 연결 시간이 초과되었기 때문일 수 있습니다

크롤러 케이스를 구현하고 싶다면 어떻게 하시겠습니까?

분석: 우리가 원하는 데이터의 출처 분석… 오디오 URL

개발자 도구를 통한 패킷 캡처 분석

  1. 오디오 URL 주소 찾기
  2. 오디오 데이터 패킷 찾기
    이 데이터 패킷에는 원하는 오디오 URL 주소가 포함되어 있습니다.
  3. 데이터 패킷 요청 매개변수의 변경 규칙을 비교하십시오.각 오디오에는 해당 오디오 ID가 있습니다.
  4. ID 소스를 쿼리하기 위해 개발자 도구를 통해 ID를 검색... 웹페이지의 소스 코드에는 우리가 원하는 오디오 ID가 포함되어 있습니다

코드를 작성하는 목적은 오디오 URL >>> 오디오 데이터 패킷 >>> 오디오 ID를 가져오는 것입니다.

코드 구현 단계: 크롤러는 데이터를 얻기 위해 url 주소로 요청을 보내는 브라우저를 시뮬레이션합니다.

1. 오디오 ID와 오디오 타이틀을 얻기 위한 첫 번째 요청

  1. 요청 보내기, 오디오 카탈로그 페이지 요청 보내기
  2. 데이터 가져오기, 응답 데이터를 반환하도록 서버 가져오기
  3. 데이터를 구문 분석하고 원하는 오디오 ID와 오디오 제목을 추출합니다.

2. 오디오 URL 주소를 얻기 위한 두 번째 요청

  1. 요청 보내기, 오디오 패킷의 경우 요청 보내기
  2. 데이터 가져오기, 응답 데이터를 반환하도록 서버 가져오기
  3. 데이터 구문 분석, 오디오 URL 주소 추출

3. 세 번째 요청은 오디오 바이너리 데이터를 얻기 위해 저장하기 위해

  1. 데이터를 저장

암호

# import requests  # 数据请求模块 第三方模块 pip install requests
# """
# 发送请求
#     对于哪一个url地址发送请求, 发送什么样请求
#
# 爬虫发送请求你可以看做打电话的一个过程
# import requests 工具 手机
# url 电话号码
# headers 信号
# get 打电话的方式 座机是需要加区号 长沙0731
# <Response [200]> 打电话通了 200 嘟嘟嘟的声音  404 您所拨打电话是空号
# """
# for page in range(2, 17):
#     url = f'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=8625924&pageNum={
    
    page}&sort=0'  # 唯一资源定位符
#     # 模拟浏览器 headers请求头 字典数据类型, 构建成键值对形式
#     headers = {
    
    
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
#     }
#     response = requests.get(url=url, headers=headers)
#     # print(response.text)  # <Response [200]> 响应对象 200 状态码表示请求成功 404 网址不对
#     #  re.findall() 调用re模块里面findall方法  从那些数据里面, 获取什么样的数据内容 \d+ 匹配一个数字或者多个数字
#     audio_info = response.json()['data']['tracks']
#     # print(audio_info)
#     for index in audio_info:
#         # 字符串格式化方法 {
    
    } 占位符
#         link = f'https://www.ximalaya.com/revision/play/v1/audio?id={
    
    index["trackId"]}&ptype=1'
#         # print(link)
#         # 获取响应对象json字典数据
#         json_data = requests.get(url=link, headers=headers).json()
#         audio_url = json_data['data']['src']
#         """
#         response.text     数据类型是字符串 响应对象文本数据
#         response.json()   数据类型是字典 响应对象json字典数据
#         response.content  二进制数据内容
#         ctrl + alt + L 格式化代码 和网易云收藏按键  以及QQ 锁定按键冲突
#         """
#         audio_content = requests.get(url=audio_url, headers=headers).content
#         with open('audio\\' + index['title'] + '.mp3', mode='wb') as f:
#             f.write(audio_content)
#         print(link, index['title'])


def get_num():
    lis = []
    for a in range(10):
        for b in range(10):
            for c in range(10):
                for d in range(10):
                    num = f'{
    
    a}{
    
    b}{
    
    c}{
    
    d}'
                    lis.append(num)
    return lis


print(get_num())

string = '1111122211'
string = string.replace('2', '3')
print(string)

발문

자, 제 글은 여기서 마치겠습니다!

더 많은 제안이나 질문이 있으면 언제든지 댓글이나 개인 메시지를 보내주세요! 같이 힘내요 (ง •_•)ง

블로거가 마음에 들면 팔로우하거나 내 기사에 좋아요와 댓글을 남겨주세요! ! !

추천

출처blog.csdn.net/python56123/article/details/124174552