|
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Flash AS2 Парсер
Здравствуйте, ищу в инете третий день, не могу найти исходника на флеш парсер HTML страниц.
В частности есть флеш радио плеер, нужно чтобы со страницы айскаста вытягивалось название песни. То есть берём код HTML страницы, я так понял оператором GetURL, ищем в нём "Current Song:" и после найденного следующую строчку присваиваем переменной. Ещё нужно как-то теги отсечь... </tr> <tr> <td>Stream Genre:</td> <td class="streamdata">Various</td> </tr> <tr> <td>Stream URL:</td> <td class="streamdata"><a target="_blank" href="http://www.audiorealm.com">http://www.audiorealm.com</a></td> </tr> <tr> <td>Current Song:</td> <td class="streamdata">Queen - Boghemian Phapsody</td> </tr> </table> </div> <div class="roundbottom"><img src="/corner_bottomleft.jpg" class="corner" style="display: none"></div> </div> <br><br> |
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
а почему в Разделе АS3?
__________________
а за окном атлантический океан! |
|
|||||
Модрон-ветеринар
|
Оператором GetURL вы страницу не "возьмете". Смотрите в сторону класса LoadVars.
__________________
Идите первым! |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Через indexOf ищем строку 'Current Song\r\n<td class="streamdata">' получаем индекс символа, к которому добавляем еще длину искомой строки. С помощью substr отрезаем весь текст до начала названия. Потом ищем </td> и отрезаем все что правее.
|
|
|||||
Регистрация: Aug 2006
Сообщений: 35
|
Спасибо за подсказки. Было бы не плохо побольше кода написать, может быть есть подобный код уже написанный, который я мог бы адаптировать для своих целей?..
|
|
|||||
По сути это обычный XML.
Побольше кода..... ну.. извольте: function LoadDat(){ LD.desc.text = "Загрузка уровней" if ( local() ){ urlxml = "levels.xml" } else { urlxml = _level0.appUrl+"levels.xml?hash="+random(9999999)+"&CRC="+random(9999999) } STAT.text += "\nLoading "+"LEVELS" var prof:XML = new XML(); prof.ignoreWhite = true; prof.load(urlxml); ShowLoad( prof, desc ) prof.onLoad = function(success) { if (success) { if (prof.status != 0){ var errorMessage:String; switch (prof.status) { case -2 : errorMessage = "A CDATA section was not properly terminated."; break; case -3 : errorMessage = "The XML declaration was not properly terminated."; break; case -4 : errorMessage = "The DOCTYPE declaration was not properly terminated."; break; case -5 : errorMessage = "A comment was not properly terminated."; break; case -6 : errorMessage = "An XML element was malformed."; break; case -7 : errorMessage = "Out of memory."; break; case -8 : errorMessage = "An attribute value was not properly terminated."; break; case -9 : errorMessage = "A start-tag was not matched with an end-tag."; break; case -10 : errorMessage = "An end-tag was encountered without a matching start-tag."; break; default : errorMessage = "An unknown error has occurred."; break; } STAT.text += "\nXML Structure Error:\n"+prof.status+" - "+errorMessage STAT._visible = true } else { var node = prof.firstChild trace("XML LOAD NODES:"+node.childNodes.length+" NodeName:"+node.nodeName) for ( var T in node.attributes){ trace("OPTIONS."+T+"="+node.attributes[T]) OPTIONS[T] = node.attributes[T] } for ( var i=0; i<node.childNodes.length; i++){ var nodeC = node.childNodes[i] switch ( nodeC.nodeName ) { case "LEVEL": var TR = new Object() TR.POINTS = new Array() TR.LINES = new Array() TR.OBJECTS = new Array() for ( var T in nodeC.attributes){ // Разобрали базовый узел тутора TR[T] = nodeC.attributes[T] trace(" addTutor att:"+T+"="+nodeC.attributes[T]) } //trace( "-------------"+nodeC.nodeName+" id="+ TR.id) for ( var j=0; j<nodeC.childNodes.length; j++){ var nodeL = nodeC.childNodes[j] //trace( nodeL.nodeName ) switch( nodeL.nodeName ){ case "point": var cfgObj = new Object() for ( var T in nodeL.attributes){ cfgObj[T] = nodeL.attributes[T] //trace( " "+T +"="+ nodeL.attributes[T]) } TR.POINTS[Number(cfgObj.id)] = cfgObj break; case "line": var cfgObj = new Object() for ( var T in nodeL.attributes){ cfgObj[T] = nodeL.attributes[T] //trace( " "+T +"="+ nodeL.attributes[T]) } TR.LINES.push( cfgObj ) break; case "object": var cfgObj = new Object() for ( var T in nodeL.attributes){ cfgObj[T] = nodeL.attributes[T] //trace( " "+T +"="+ nodeL.attributes[T]) } TR.OBJECTS.push( cfgObj ) break; } } LEVELSCFG[Number(TR.id)] = TR trace( TR.id+" -- "+TR.POINTS.length +" / "+TR.LINES.length+" / "+TR.OBJECTS.length ) break; } } STAT.text += "...OK" LD.removeMovieClip(); LDR.removeMovieClip(); _root.gotoAndPlay(2) } } else{ STAT.text += "\nXML LOAD ERROR: "+urlxml STAT._visible = true } } } К слову сказать, в общем случае вы Html не сможете прочитать, если crossdomain.xml этого не предполагает. Локально работать будет, удаленно может перестать. Но могу ошибаться. Но будьте готовы. Попробуйте сначала его просто оттуда загрузить. Может быть и париться далее не стоит. Хотя, о5-таки, можно вывернутсья через рнр.... |
|
|||||
Хм.... Флэш он... ХМЛ ест как бы.... Сквозь пальцы. Либо схомячит, либо нет.
Я парсил ответ ВК со списком приложений. А уж кривее чем у ВК ни штмл, ни хмл, ни джсона нету..... Надо произвести эксперимент и точно убедитсья. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Дарк - просто поверь. Нtml кривее. )
__________________
Отряд Котовскага |
|
|||||
Скучно спорить с АС3-шниками... вы все такие закомплексованные....
|
Часовой пояс GMT +4, время: 21:45. |
|
« Предыдущая тема | Следующая тема » |
|
|