Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Возможен ли граббинг из Flash? (http://www.flasher.ru/forum/showthread.php?t=176869)

EndoCrinologist 19.03.2012 17:07

Возможен ли граббинг из Flash?
 
На PHP функция file_get_content() обеспечивает открытие файла с url-адреса, его чтение и закрытие. Есть ли подобное на Flash? Если да, то подскажите, в какую сторону раскручивать. Заранее спасибо.

И вот маленький вопрос. Будет ли это работать с файла EXE flash'a? Еще раз спасибо.

Tails 19.03.2012 17:15

Если на сервере, то флешу без сторонней помощи не обойтись (та же пыха подойдёт). Если на локальной машине, то только с использованием AIR или MDM Zinc

EndoCrinologist 19.03.2012 17:20

хм... просто некоторые хосты блокируют эти функции... они как бы платные... А вот кстати, я заметил такую штуку, что EXE файлы флеша получают данные с внешнего сайта.... Вот только у меня большой текстовый файл. Поэтому и хотелось бы узнать, как получить содержимое страницы, а потом её обрабатывать

Добавлено через 10 минут
Вот нашел на этом форуме скрипт:
Код AS1/AS2:

txt.text = "Загружаю данные...";
 
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean){
 
        if (success){
                txt.text = this.toString();
        } else {
        trace("Ошибка в загрузке / разборе результирующей строки.");
        }
}
my_lv.load("http://www.plazmaburst2.com/?a=&s=7&ac=endocrinolog");

Данные загружает, но в непонятном формате: с какими-то числами и процентами. Как мне перевести это в нормальную кодировку?

Добавлено через 19 минут
И есть предел считывания символов этой функции? Потому что файл прочелся не полностью

Tails 19.03.2012 17:50

Сервер должен отсылать в кодировке utf-8, флеша с ним работает. Если возможности отредактировать файл на сервере нет, тогда сами декодируйте кракозябру в utf-8. Вот я нашол небольшую функцию, правда не все сиволы чтоли декодирует:
Код AS1/AS2:

function encode(string) {
 
                var utftext = "";
 
                for (var n = 0; n < string.length; n++) {
 
                        var c = string.charCodeAt(n);
 
                        if (c < 128) {
                                utftext += String.fromCharCode(c);
                        }
                        else if((c > 127) && (c < 2048)) {
                                utftext += String.fromCharCode((c >> 6) | 192);
                                utftext += String.fromCharCode((c & 63) | 128);
                        }
                        else {
                                utftext += String.fromCharCode((c >> 12) | 224);
                                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                                utftext += String.fromCharCode((c & 63) | 128);
                        }
 
                }
 
                trace(utftext);
        }


EndoCrinologist 19.03.2012 17:57

Вот суммарный код:

Код AS1/AS2:

txt.text = "Загружаю данные...";
 
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean){
 
        if (success){
                str = this.toString();
                encode(str);
                txt.text = utftext;
        } else {
        txt.text = "Ошибка в загрузке / разборе результирующей строки.";
        }
}
my_lv.load("http://www.plazmaburst2.com/?a=&s=7&ac=endocrinolog");
 
function encode(string){
var utftext = "";
        for (var n = 0; n < string.length; n++) {
                var c = string.charCodeAt(n);
                if (c < 128) {
                        utftext += String.fromCharCode(c);
                } else
                if((c > 127) && (c < 2048)){
                        utftext += String.fromCharCode((c >> 6) | 192);
                        utftext += String.fromCharCode((c & 63) | 128);
                } else {
                        utftext += String.fromCharCode((c >> 12) | 224);
                        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                        utftext += String.fromCharCode((c & 63) | 128);
                }
        }
        //trace(utftext);
}

Нов текстовом поле он мне пишет undfined. Что я сделал не так?

P.S. Вот отрывок получаемой крякозябры:
Цитата:

copy%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%202010%2D2012%2C%20%3Cb%3E%2E%3AEric%20Gurt%3A%2E%3C%2Fb%3E%2C%20%3Ca%20href=%22http%3A%2F%2Fwww%2ECool buddy%2Ecom%22%20target%3D%22%5Fblank%22%3Ewww%2ECoolbuddy%2Ecom%3C%2Fa%3E%2E%20%0A%20%20%20%20%20%20%20%20%20%20%20%20All%20Rights%20Reserved%3Cbr%3E %0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20href%3D%22%3Fa%3D&nbsp%3B%3C%2Fdiv%3E%0A

Tails 19.03.2012 17:59

Приду домой, обязательно попробую разобраться.

EndoCrinologist 19.03.2012 18:31

НАШЕЛ СПОСОБ! Спасибо Вашему форуму ^_^
Даже декодинг не понадобился:)
Вот скрипт, если кому надо:
Код AS1/AS2:

txt.text = "Загружаю данные...";
 
var loader:LoadVars = new LoadVars();
loader.onData = dataParser;
loader.load("URL_АДРЕС");
 
function dataParser(datar:String):Void {
        txt.text = datar;
}

Если страница большая, то данные постепенно выводит

Добавлено через 6 минут
Но если меня интересует всего пара строк из всей страницы, то их можно как-то извлечь?


Часовой пояс GMT +4, время: 23:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.