Загрузка файлов * .mp4 из URL с помощью Python - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь сгенерировать массив [url_audioenci, url_caratula, titulo_cancion, nombre_artista], чтобы загрузить список музыки из http://los40.com.ar/lista40/. Я знаю, как загружать мультимедиа с помощью библиотеки запросов, но я не могу извлечь и ссылки изстраница

from bs4 import BeautifulSoup
import requests
# import re
url = 'http://los40.com.ar/m/lista40/'
videos = []
response = requests.get(url)
bs = BeautifulSoup(response.text)
for i in range (1,41):
    videos[i]= bs.find_all('datos_camcion_'+i))
# responses= bs.find_all('script', language="javascript", type="text/javascript")

print(videos)
<h3>LISTA DEL 08/06/2019</h3>
<script language="javascript" type="text/javascript">
  var datos_cancion_1 = Array();
  datos_cancion_1['url_audioenci']         = 'https://recursosweb.prisaradio.com/audios/dest/570005645440.mp4';
  datos_cancion_1['url_muzu']         = '';
  datos_cancion_1['url_youtube']      = 'https://www.youtube.com/watch?v=XsX3ATc3FbA';
  datos_cancion_1['url_itunes']       = '';
  datos_cancion_1['posicion']         = '1';
  datos_cancion_1['url_caratula']     = 'https://recursosweb.prisaradio.com/fotos/dest/570005645461.jpg';
  datos_cancion_1['titulo_cancion']   = 'Boy with luv';
  datos_cancion_1['nombre_artista']   = 'BTS;Halsey';
  datos_cancion_1['idYes']            = 'BTS';
  datos_cancion_1['VidAu']            = 0;
</script>

Я ожидаю

videos=[['https://recursosweb.prisaradio.com/audios/dest/570005645440.mp4','https://recursosweb.prisaradio.com/fotos/dest/570005645461.jpg','Boy with luv','BTS;Halsey'].....]

1 Ответ

0 голосов
/ 11 июня 2019

Моя попытка фильтрации данных:

from bs4 import BeautifulSoup
import requests

url = 'http://los40.com.ar/m/lista40/'
videos = []
response = requests.get(url)
bs = BeautifulSoup(response.text, features="html5lib")

scripts = bs.find_all('script', language='javascript', type='text/javascript') 
end = len( bs.find_all('script', language='javascript', type='text/javascript') )
start = end - 40
data = []

for i in range( start, end ):
    data.append( str(scripts[ i ]) )

print( data[0] ) 

Выход:

<script language="javascript" type="text/javascript">
  var datos_cancion_1 = Array();
  datos_cancion_1['url_audioenci']         = 'https://recursosweb.prisaradio.com/audios/dest/570005645440.mp4';
  datos_cancion_1['url_muzu']         = '';
  datos_cancion_1['url_youtube']      = 'https://www.youtube.com/watch?v=XsX3ATc3FbA';
  datos_cancion_1['url_itunes']       = '';
  datos_cancion_1['posicion']         = '1';
  datos_cancion_1['url_caratula']     = 'https://recursosweb.prisaradio.com/fotos/dest/570005645461.jpg';
  datos_cancion_1['titulo_cancion']   = 'Boy with luv';
  datos_cancion_1['nombre_artista']   = 'BTS;Halsey';
  datos_cancion_1['idYes']            = 'BTS';
  datos_cancion_1['VidAu']            = 0;
</script>

Данные [0:39] содержат верхние 40 и все соответствующие данные в виде строк, но я не уверен, как извлечь информацию из строк.

Есть некоторые предложения в этой теме через import json или import re, с которыми я пытался возиться, но я не мог заставить их работать.

...