Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 22, 2013 18:43:55

wmnpyafn
Зарегистрирован: 2013-06-09
Сообщения: 26
Репутация: +  1  -
Профиль   Отправить e-mail  

Название треков в vk

Хочу попробоватьк качать треки из вк. Столкнулся с тем, что название трека имеет вид e561er5mu5.mp3.
Как при скачивании получить нормальное название?

Офлайн

#2 Июнь 22, 2013 19:42:40

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Название треков в vk

Изпользовать API? Там можо получить информацию про трек

Офлайн

#3 Июнь 27, 2013 04:15:18

wiygn
Зарегистрирован: 2012-08-19
Сообщения: 52
Репутация: +  2  -
Профиль   Отправить e-mail  

Название треков в vk

Смотря как вы тащите аудиозаписи. Если парсите страницу с записями, то после

<input ... /c679058f15e6.mp3,260" />
есть враппер для названия
<div class="title_wrap fl_l" onmouseover="setTitle(this);"... Тут название песни</div>

Офлайн

#4 Июнь 27, 2013 14:49:39

wmnpyafn
Зарегистрирован: 2013-06-09
Сообщения: 26
Репутация: +  1  -
Профиль   Отправить e-mail  

Название треков в vk

Можете помочь вытащить ссылки на треки со страницы? Пытался с помощью lxml.cssselect вытащить, но не разобрался как.
Разбираю страницу https://m.vk.com/audio

Офлайн

#5 Июнь 28, 2013 05:45:04

wiygn
Зарегистрирован: 2012-08-19
Сообщения: 52
Репутация: +  2  -
Профиль   Отправить e-mail  

Название треков в vk

А в чем, собственно, проблема-то возникла?

Я для парсинга использую BeautifulSoup под python 3. Но никаких принципиальных различий как между lxml и bs, так и между большой и мобильной версией сайта нет.

Проходитесь циклом по тексту страницы. К примеру ищите такой блок кода:

<div class="ai_body">
<div class="ai_dur" data-dur="240" onclick="audioplayer.switchTimeFormat(this, event);">4:00</div>
<div class="ai_label">
<span class="ai_artist">Vass</span>
&ndash;
<span class="ai_title">Rowdy Arabia </span>
</div>
<input type="hidden" value="https://psv4.vk.me/c6294/u164891073/audios/b8798ae959cb.mp3">
</div>

Т.е. ищите родительский div.ai_body и из него уже доставайте все что необходимо. Прямая ссылка в инпуте, название и исполнитель в отдельных спанах с уникальными классами.

Офлайн

#6 Июнь 28, 2013 19:07:36

wmnpyafn
Зарегистрирован: 2013-06-09
Сообщения: 26
Репутация: +  1  -
Профиль   Отправить e-mail  

Название треков в vk

import lxml.html
page = open('1.html')
doc = lxml.html.document_fromstring(page.read())
for url in doc.cssselect('div.ai_body input'):
    print url.text
Пытаюсь сделать вот так, не находит ни чего. Точнее пишет None, None……

Офлайн

#7 Июнь 30, 2013 07:54:59

wiygn
Зарегистрирован: 2012-08-19
Сообщения: 52
Репутация: +  2  -
Профиль   Отправить e-mail  

Название треков в vk

Он и не должен ничего находить. Советую тщательно ознакомиться с этим. Питона нет под рукой, поэтому проверить lxml не могу, но по идее такое должно сработать:

for input in doc.cssselect('div.ai_body input'):
    print(input.value)

Отредактировано wiygn (Июнь 30, 2013 07:58:42)

Офлайн

#8 Июль 1, 2013 13:48:12

wmnpyafn
Зарегистрирован: 2013-06-09
Сообщения: 26
Репутация: +  1  -
Профиль   Отправить e-mail  

Название треков в vk

Спасибо) Работает)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version