Что нового

[Сеть, интернет] Напишите за меня скрипт получения списка исполнителей и треков с music.yandex.ru

FullZero

Новичок
Сообщения
8
Репутация
0
Версия AutoIt: 3.3

Описание:
Есть сайт music.yandex.ru
Скрипт должен зайти на сайт, перейти в категория А (Русских исполнителей) Сграбить название исполнителей и название треков. Полученные данные он должен сохранить в текстовый документ в папке где лежит написанный скрипт. Он должен уметь грабить не только первую страницу, но и со следующих (1, 2, 3 и т.д. в зависимости от количества исполнителей)

Примечания:
Мне не нужны сами песни, мне просто нужны названия исполнителей и их треков
Готовый материал для экспорта в файл он должен сохранить в таком виде
Исполнитель - Песня(Перевод строки)
Исполнитель - Песня(Перевод строки) т.д.

Если есть вопросы спрашивайте. Сомневаюсь что кто то возьмётся ;D
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Re: [Сеть, интернет] Напишите за меня скрипт получения списка исполнителей и треков с music.yandex.

Это просто :smile:
Вот для начала 0 страница на букву А
Код:
$bData = InetRead("http://music.yandex.ru/fragment/alphabet/ru0?page=0")
$sData = BinaryToString($bData, 4)
$aData = StringRegExp($sData, '"title":"(.*?)", "artist":"(.*?)"', 3)
Local $sOut = ""
For $i = 0 To UBound($aData) - 1 Step 2
	$sOut &= $aData[$i + 1] & "-" & $aData[$i] & @CRLF
	ConsoleWrite($aData[$i + 1] & "-" & $aData[$i] & @LF)
Next
$hFile = FileOpen("out.txt", 1)
FileWrite($hFile, $sOut)
FileClose($hFile)



Добавлено:
Сообщение автоматически объединено:

Вот полный скрипт
Код:
For $i = 0 To 32
	ConsoleWrite("Буква: " & $i & "\32" & @LF)
	If $i >= 26 And $i <= 29 Then ContinueLoop ;Пропускаем несуществующие страницы
	$iPage = 0
	While 1
		$bData = InetRead("http://music.yandex.ru/fragment/alphabet/ru" & $i & "?page=" & $iPage)
		If @error Then ExitLoop
		ConsoleWrite(@TAB & "Страница: " & $iPage + 1 & @LF)
		$iPage += 1
		_SaveData($bData)
	WEnd
Next

Func _SaveData($bData)
	$sData = BinaryToString($bData, 4)
	$aData = StringRegExp($sData, '"title":"(.*?)", "artist":"(.*?)"', 3)
	Local $sOut = ""
	For $i = 0 To UBound($aData) - 1 Step 2
		$sOut &= $aData[$i + 1] & "-" & $aData[$i] & @CRLF
	Next
	$hFile = FileOpen("out.txt", 1)
	FileWrite($hFile, $sOut)
	FileClose($hFile)
EndFunc   ;==>_SaveData
 
Верх