Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Парсинг страницы (https://javascript.ru/forum/events/8578-parsing-stranicy.html)

denidip 03.04.2010 01:18

Парсинг страницы
 
Вот сталкнулся с такой задачей, попробую описать ка можно подробнее...
У меня есть страница скажем index.html(*1)
Есть страница в интернете по адресу http://site.com/user1.html
страница выглядет следующим образом(структура очень простенькая):
<HTML>
<META http-equiv="content-type" content="text/html; charset=KOI8-R">
<META http-equiv="expires" content="Tue, 20 Aug 1996 14:25:27 GMT">
<LINK rel="stylesheet" href="../html/default.css">
<SCRIPT language="javascript" src="../html/script.js"></SCRIPT>
<!---- service_type  ------>
<SCRIPT language="javascript" src="../html/overlib_mini.js"></SCRIPT>
<SCRIPT language="javascript" src="../html/cal.js"></SCRIPT>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<TABLE width="98%" Border=1>
<COL width="150px;"><COL>
<TR><TD Bgcolor="#AAAAAA">Пользователь</TD><TD>Вася пупкин</TD></TR>
<TR><TD Bgcolor="#AAAAAA">Номер</TD><TD>1234567</TD></TR>
<TR><TD Bgcolor="#AAAAAA">Тип пользователя</TD><TD>Модератор</TD></TR>
<TR><TD Bgcolor="#AAAAAA">login</TD><TD>Vasya</TD></TR>
<TR><TD Bgcolor="#AAAAAA">Группа</TD><TD>синий</TD></TR>
<TR><TD Bgcolor="#AAAAAA">Текущий баланс</TD><TD><font color=red> 999.99 руб. </font>
</TABLE>
</HTML>

И мне их этой странички необходим поместить на мою 3 значения: Пользователь, номер, и текущий баланс.
Тоесть как я понимаю скрипт должен сохранить страницу, проанализировать её и вывести на моей странице нужные мне значения...
Это основная задача, по путно с ней возникает 2 проблеммы:
1) Страница доступна только после авторизации, тоесть нужно формировать запрос! как это правильно делается сгодятся любые примеры?!!!
2) Так как значение баланса динамическое, то скрипт должен повторяться допустим каждый час. но страница не должна перезагружаться тоесть подгрузка новых значений должна проходить в ajax'е.
За ранее извеняюсь, но я далеко не гуру))), поэтому если не сложно опишите структуру выполнения данных операций со страницей...
ЗЫ, буду благодарен за любой ответ!

Gvozd 03.04.2010 02:00

два документа с разных доменов не имеют доступа друг к другу из-за настроек безопасности браузера
поэтому отпарсить чужую страницу в браузере, невовлзможно в принципе
парсьте на сервере, и подгружайте ajax-ом данные отпарсенные

denidip 03.04.2010 02:48

даже если один из них на локалхосте?
просто получается что пользователей много, и страница у каждого своя, и таким образом на сервере будет создаваться столькоже xml сколько и пользователей, да к томуже постоянно обновляться, может есть кактойто извращенный способ или ещё чтонибудь, чтоб каждый пользователь парсил сам на себя?

denidip 03.04.2010 02:50

вобщем объясню суть делаю гаджет, и именно в него с сайта должны попадать значения....

Gvozd 03.04.2010 02:57

Цитата:

Сообщение от denidip
даже если один из них на локалхосте?

И что с того?
Цитата:

Сообщение от denidip
может есть кактойто извращенный способ или ещё чтонибудь, чтоб каждый пользователь парсил сам на себя?

http://javascript.ru/ajax/cross-domain-scripting
но эти способы все равно предназначены для использования в том случае, когда оба домена ваших, так как предполагают модификации на сайте-доноре
в крайнем случае, некоторые из них доступны, когда админ сайта-донора, не учел что-то, либо вы делаете это сиключитльно для своего локалхоста, и не предполагаете использование другими пользователями(но ведь в таком случае можно и просто отключить настройки безопасности браузера, ага)

denidip 03.04.2010 03:03

я то себе отключу, а вод прадвигать в массы "отключите безопасность" пахнет провалом, я вообще конечно могу пойти изваращенным вариантом как изначально и думал парсить страницу в delphi перегоняя в xml а из это xml уже и вытягивать значения в сам гаджет, технология конечноже 100% но трудоёмкая, а потом посмотрел дак в этих гаджетах что угодно запускают, думал обойдусь малой кровью, видемо не получится((((


Часовой пояс GMT +3, время: 21:13.