자신이 좋아하는 음악이 파이썬 배치에서들을 다운로드하는 방법을 가르쳐

머리말

네트워크에서 텍스트와 이미지의 텍스트,뿐만 아니라 상업적 목적, 저자에 소유하여, 교환 내용, 질문이있는 경우, 치료를 위해 문의하시기 바랍니다.

PS : 필요한 파이썬 학습 자료는 작은 파트너에 추가 할 수 있다면 자신을 얻기 위해 아래 링크를 클릭

HTTP : // 참고. youdao. COM / noteshare ? ID = 3054 cce4add8a909e784ad934f956cef

음악은 현재의 음악을 많이 다운로드 할 수 없습니다 재생, 스왑 제품의 수명입니다. 우리 기술자의 출생, 어떻게 그것을 의지하고?

지식 포인트 :

  1. 요청

  2. 정규 표현식

 

개발 환경 :

  1. 버전 : anaconda5.2.0 (python3.6.5)

  2. 편집 : pycharm

 

타사 라이브러리 :

  1. 요청

  2. 꾸러미

웹 분석

대상 사이트 : http://music.taihe.com/search?key=%E9%99%88%E7%B2%92

음악의 실제 주소의 분석

첸 노래가 입자를 선택 피상적 인 사례 연구를

그림 삽입 설명 여기

개발자 도구를 선택 네트워크를 열고 -> 미디어 -> 실제 주소의 음악을 얻을 수있는 페이지를 새로 고침

그러나 결과 주소가 소스 코드의 관점에서 읽을 수있다, 바이두의 음악은 확실히 숨길 수. 이 시간은 일반적으로 두 가지 사례를 가지고있다. 은 제 2 데이터가 숨겨져있는 암호화 된 자바 스크립트 또는 접합 접속 요청의 사용이다. 우리가 알고하지 않기 때문에 상황의 종류가있다. 그래서 우리는 천천히 데이터 요청을 분석 할 수 있습니다. 분석 후, 우리는 실제 주소가 API 내부의 음악에 존재 볼 수 있습니다 그림 삽입 설명 여기 그림 삽입 설명 여기 http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&callback=jQuery17206453751179783578_1544942124991&songid=243093242&from=web&_=1544942128336

并且我们请求这个 API 返回的是一个 json 数据(也就是python的字典数据类型)。只要我们使用字典的规则就能将我们的所有数据给提取到。

url拼接 获取所有数据

前面我们得到了音乐的真实地址,接下来我们就是分析真实地址的 url ,以期待得到下载所有音乐的诀窍。 그림 삽입 설명 여기 그림 삽입 설명 여기 仔细分析一下 url 就可以发现,?后面的from参数与_即使不存在也不影响数据的请求。

并且后面的参数中的songid其实就是歌曲的唯一idfrom参数其实就是表明从哪个平台过来的

所以等一下我们下载音乐时,只要批量获取到歌曲的songid就能将所有的歌曲给全部下载下来了。

 

批量获取singid

그림 삽입 설명 여기 使用开发者工具,查看网页源码就能查看到songid的位置,如果我们分析一个歌手页面的url你会发现同样可以构造。

到此,整个网页分析就结束了。

实现效果

그림 삽입 설명 여기 그림 삽입 설명 여기

完整代码

 1 import re
 2 import requests
 3  4  5 def get_songid():
 6     """获取音乐的songid"""
 7     url = 'http://music.taihe.com/artist/2517'
 8     response = requests.get(url=url)
 9     html = response.text
10     sids = re.findall(r'href="/song/(\d+)"', html)
11     return sids
12 13 14 def get_music_url(songid):
15     """获取下载链接"""
16     api_url = f'http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&songid={songid}&from=web'
17     response = requests.get(api_url.format(songid=songid))
18     data = response.json()
19     print(data)
20     try:
21         music_name = data['songinfo']['title']
22         music_url = data['bitrate']['file_link']
23         return music_name, music_url
24     except Exception as e:
25         print(e)
26 27 28 def download_music(music_name, music_url):
29     """下载音乐"""
30     response = requests.get(music_url)
31     content = response.content
32     save_file(music_name+'.mp3', content)
33 34 35 defSAVE_FILE (파일명, 콘텐츠) :
 36      "" " 保存音乐" "" 
37      오픈 (파일 이름 =, = 모드와 " WB " F 등)
 38          f.write (콘텐츠)
 39  40 41 경우 __name__ == " __main__ " :
 42  song_id get_songid () :
 43          music_name, music_url = get_music_url (song_id)
 44          download_music (music_name, music_url)        

 


추천

출처www.cnblogs.com/qun821460695/p/11830206.html