xmly reptiles Caso

. 1  # ! / Usr / bin / Python 
2  # - * - Codificación:. UTF-8 - * - 
3.  # @Time: 03/25/2020 19:09 
. 4  # @author: Meng 
. 5  # @file: paxmly.py 
. 6  # @Software: PyCharm 
. 7  
. 8  importación solicita   # página de información de la página del navegador analógico para el rastreo 
9.  importación PARSEL # paquete de análisis sintáctico página 
10 cabeceras = { # disfrazada petición formato de datos de cabecera del navegador es un diccionario de 
11.  ' User-Agent ' : 'Mozilla / 5.0 (Windows NT 10,0; Win64; x64-) AppleWebKit / 537.36 (KHTML, como el Gecko) la Chrome / 80.0.3987.149 Safari / 537.36 ' 
12 es  }
 13 es de respuesta = requests.get (URL = ' HTTPS: //www.ximalaya. COM / youshengshu / 34013148 / P2 / 'cabeceras = cabeceras) # rastrear páginas especificado lista de reproducción 
14 SEL = parsel.Selector (response.text)   # de análisis web 
15 sound_list = sel.css ( ' lista .Sound UL-Li un ' ) # consigue una página ligada 30 
16 list_all = []   # almacenado lista de todos los resultados de 
17.  de sonido en sound_list [doce y media]: # rebanada
18 es      # impresión (Sound) 
19.      MEDIA_URL sound.css = ( ' A :: attr (el href) ' ) .extract_first () # remove enlace 
20 es      # impresión (MEDIA_URL) 
21 es      MEDIA_URL media_url.split = ( ' / ' ) [-. 1 ]   # eliminar la ID de audio 
22 es      # impresión (MEDIA_URL) 
23 es      Media_name sound.css = ( " a :: attr (título) " ) .extract_first ()   # eliminado nombre audio 
24      # de impresión (Media_name) 
25      list_all.append ((MEDIA_URL , Media_name)) # anexados a la lista 
26 # Impresión (list_all) 
27  # adquirida enlace encapsulado verdadera canción def define la función 
28  def media_api (track_ID):
 29      api_url = F ' https://www.ximalaya.com/revision/play/v1/audio?id= } & PTYPE track_ID = {1. ' ;
 30      Respuesta = requests.get (api_url, cabeceras = cabeceras)
 31 es      # impresión (response.json ()) 
32      # retorno JSON extraído por medio de un diccionario [] 
33 es      data_json = response.json ()
 34 es      = data_json el src [ ' datos ' ] [ ' el src ' ]
 35      de retorno del src
36  # descargador de descarga MP4 
37 [  DEF download_meida (MEDIA_URL, Media_name):
 38 es      de respuesta = requests.get (MEDIA_URL, cabeceras = cabeceras);
 39      con Open (F ' {} .mp4 Media_name ' , MODE = ' WB ' ) AS F:   # descarga el archivo como el nombre del archivo 
40          f.write (response.content)
 41 es  SI  el __name__ == ' __main__ ' :
 42 es      para la dirección URL en list_all:
 43 es          de impresión ([. 1 URL ])
 44 es         = Media_api true_url (URL [0])   # representante de nuestra Identificación del audio, un identificador único 
45          nombre URL = [. 1 ]
 46 es          download_meida (true_url, nombre)

 

1  # 能发送http请求的库
2  importación solicitudes
 3  de importación PARSEL
 4 cabeceras = {
 5  ' User-Agent ' : ' Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 77,0 .3865.120 Safari / 537.36 ' 
6  }
 7  
8  def download_meida (MEDIA_URL, media_name):
 9      de respuesta = requests.get (MEDIA_URL, cabeceras = cabeceras);
10      con abierto (f ' {} media_name .mp4 ' , modo = ' wb ') Como f:
 11          f.write (response.content)
 12  
13  def media_api (track_id):
 14      api_url = f ' https://www.ximalaya.com/revision/play/v1/audio?id={track_id}&ptype = 1 ' ;
15      de respuesta = requests.get (api_url, cabeceras = cabeceras)
 16      # de impresión (response.json ()) 
17      # json Vuelta a la descripción字典类型提取使用[] 
18      data_json = response.json ()
 19      src = data_json [ ' datos ' ] [ ' src ' ]
 20      de retorno src
21 es  
22 es  # impresión (media_api (98791745)) 
23 es  
24  DEF get_total_page (PAGE_URL):
 25      # solicitud de página 
26 es      de respuesta = requests.get (PAGE_URL, cabeceras = cabeceras)
 27      # adquirieron página HTML contenido 
28      SEL = parsel.Selector (Respuesta .text)
 29      # encontrar un sello por el selector CSS atributo de clase .Sound-lista como un sonido-lista y en el siguiente li UL 
30      sound_list = sel.css ( ' lista .Sound un li UL ' )
 31      # sólo el primer enlace 30 páginas es interceptado antes de 30 
32      para sonido en sound_list [: 30 ]:
33 es          # extract_first () será extraída del texto objeto 
34          # Get href atributo de una etiqueta de los contenidos 
35          MEDIA_URL sound.css = ( ' un :: attr (href) ' ) .extract_first ()
 36          # / youshengshu / 16411402 / 98791745-- sólo a la ID más posterior 
37 [          MEDIA_URL media_url.split = ( ' / ' ) [-. 1 ]
 38 es          # Obtiene el atributo de título de los contenidos de una etiqueta 
39          Media_name sound.css = ( ' un :: attr (título) ' ) .extract_first ()
 40          # con el contenido de todo un retorno rendimiento ciclo 
41 es          rendimiento MEDIA_URL, Media_name
 42 es  
43 es SI  la __name__ == ' __main__ ' :
 44 es      # páginas de circulación páginas de descarga descargan gama representativa del rango de 
45      para Página en gama (l, 3 ):
 46 se          meidas get_total_page = (F ' https://www.ximalaya.com/yinyue / 23.84118 millones de euros / Página {P} ' )
 47          de ID_de_medio, Media_name en meidas:
 48              # de impresión (MEDIA_URL, Media_name) 
49              MEDIA_URL = media_api (ID_de_medio)
 50              Imprimir (MEDIA_URL)
 51 es              download_meida (MEDIA_URL, Media_name)

 

Supongo que te gusta

Origin www.cnblogs.com/987m/p/12591417.html
Recomendado
Clasificación