PDA

Просмотр полной версии : Вытащить данные из HTML


jurik_5
08.04.2009, 11:27
Необходимо вытащить из HTML страницы часть данных, например

<html>
<head> </head>
<body>
....
<table id="tab" cellpadding="0" cellspacing="0">
<tr>
<td>08.04.2009</td>
<td class="text">659</td>
<td class="text">689</td>
<td class="text">629</td>
....

</body>
</html>


вывести 659, 689, 629.

Можно ли это сделать во Flash (AS 2 / 3), а если возможно, та каким способом это лудше сделать?

Зарание благодарен.

MrXoT
08.04.2009, 12:37
Можно попробывать использовать jquery...

jurik_5
08.04.2009, 13:53
Я так понимаю jquery используется в JavaScript? А мне надо что бы запущенный Flash мувик затягивал данные с удалённой веб страницы.

Может можно загнать HTML код в string а потом задать чтение от class="text"> до </td> и т.д.
Какие классы можно для этого использовать :o

MrXoT
08.04.2009, 15:15
а что мешает из JavaScript передать данные во флеш?
притом что в jquery работа с html намного проще чем во флеше.

jurik_5
08.04.2009, 16:54
Да наверное ничего не мешает, только Flash мувик будет запускатся непосредствено на локальном компе в плеере, а не как часть веб страницы.

Я только начал разбиратся с AS, а с java совсем не работал, так что лично для меня проще написать сразу во Флеш, пускай даже скрипт займёт несравнимо больше места.

jurik_5
26.04.2009, 17:00
Может есть смысл использовать .split .join
Например:

var my_str:String = '<td class="text_green">0.647</td><td class="text_green">0.677</td><td class="text_green">0.617</td><td>-</td><td>-</td><tr><td width="60">';
var my_array:Array = my_str.split('<td class="text_green">');

for (i=0; i < my_array.length; i++){
trace(my_array[i]) };

/* Trace покажет:
0.647</td>
0.677</td>
0.617</td><td>-</td><td>-</td><tr><td width="60">
*/


И возникает вопрос как убрать ненужное
</td>
</td>
</td><td>-</td><td>-</td><tr><td width="60">
и оставить только числа?
0.647
0.677
0.617

user123
26.04.2009, 22:58
/* Trace покажет:
0.647</td>
0.677</td>
0.617</td><td>-</td><td>-</td><tr><td width="60">
*/
[/AS]

И возникает вопрос как убрать ненужное
</td>
</td>
</td><td>-</td><td>-</td><tr><td width="60">
и оставить только числа?
0.647
0.677
0.617

ну для конкретного случая что-то вроде

var my_str:String = '<td class="text_green">0.647</td><td class="text_green">0.677</td><td class="text_green">0.617</td><td>-</td><td>-</td><tr><td width="60">';
var my_array:Array = my_str.split('<td class="text_green">');
for (i=0; i < my_array.length; i++){
my_ar2 = my_array[i].split('<');
trace(my_ar2[0]);
};

jurik_5
27.04.2009, 00:52
Спасибо за помощь, хороший вариант. Но покопавшись в хелпе я написал такой скрипт:

var my_str:String = '<td class="text_green">0.647</td><td class="text_green">0.677</td><td class="text_green">0.617</td><td>-</td><td>-</td><tr><td width="60">';
var my_array:Array = my_str.split('<td class="text_green">');
var A ="";
var B ="";
var C ="";
for (i=0; i < 5 i++){
A = A + my_array[0].charAt(i);
B = B + my_array[1].charAt(i);
C = C + my_array[2].charAt(i);
trace(ABC);
};

MrPoma
27.04.2009, 01:02
Да наверное ничего не мешает, только Flash мувик будет запускатся непосредствено на локальном компе в плеере, а не как часть веб страницы.Запускайте на локальном компе как часть веб-страницы.

jurik_5
27.04.2009, 11:39
Запускайте на локальном компе как часть веб-страницы.

Да, точно. Както не подумал о таком варианте. Но получилось обойтись и силами AS, темболее, что мне предпочтительно открывать непосредственно в плеере флэш.

Obi
27.04.2009, 11:41
Html это тот-же хмл, который парсит браузер. Парсите ее как хмл.

etc
27.04.2009, 12:45
Html это тот-же хмл, который парсит браузер. Парсите ее как хмл.
Да, только чаще всего невалидный :)

Obi
27.04.2009, 18:20
Да, только чаще всего невалидный :)
Пример, который привел автор, валидный, за исключением не закрытых тегов <tr> и <table>, которые наверняка закрыты в многоточии :)

Ну и если уж на то пошло и прям очень надо, то с регекспами на ас3 не сложно написать простенький валидатор.