forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Данные с icq.com (http://forum.boolean.name/showthread.php?t=12410)

Freez 23.04.2010 19:02

Данные с icq.com
 
Hарод подскажите пожалуйста простой пример получения строки nickname с http://www.icq.com/people/full_detai...php?uin=666666

Я имею в виду сделать запрос к странице пропарсить текст и вывести на экран только ник.Желательно исходник

по поводу парсинга есть такое мнение

Цитата
---------------------------------------------------
Var
I:Integer;
S:string;
Begin
i:=pos('Nickname',S);
if i<>0 do
Begin
S:=copy(S,i,Length(S));
i:=pos('flvl',S);
S:=copy(S,i,Length(S));
i:=pos('</div>',S);
S:=copy(S,7,i-7);
End;
End;
Как вариант можно сделать так. Прошу ногами сильно не пинать, какая первая мысль по поводу прасинга в голову пришла, так и сделал =)

Изначально в переменной S должен быть весь код страницы, после выполнения этого куска, там останится лишь Ник.

Пример рабочй проверял. Работать будет до тех пор пока не изменят структуру сайта. Ну или у человека не будетв нике "</div>" =))
__________________________________________________ __________

Reks888 23.04.2010 19:16

Ответ: Данные с icq.com
 
Ну так если все работает, то чего спрашиваешь?

Freez 23.04.2010 19:22

Ответ: Данные с icq.com
 
То что парсинг работает я знаю
запрос страницы сделать и вывести на экран никак не получается

из файла справки узнал что

В MIDlet Pascal предусмотрен специальный тип переменных под названием http, который используется как идентификатор HTTP соединения. В приведенном ниже коде мидлет устанавливает связь и скачивает web-страничку из Интернета:

var conn : http;
htmlBody : string;
contentType : string;

begin
// Пытаемся установить соединение с сайтом www.icq.com
if not OpenHttp(conn, 'http://www.icq.com/people/full_details_show.php?uin=666666') then Halt;

// Задаем метод передачи данных (другие поддерживаемые методы - это HEAD и POST)
SetHttpMethod(conn, GET);

// Указываем название нашего браузера
AddHttpHeader(conn, 'User-agent', 'Opera Mini 9.25');

// Отсылаем HTTP запрос и проверяем код ответа (200 = OK)
if SendHttpMessage(conn) <> 200 then Halt;

// Скачиваем запрашиваемый файл (по-идее это index.html)
htmlBody := GetHttpResponse(conn);

// Читаем заголовок присланного файла
contentType := GetHttpHeader(conn, 'Content-type');

// Закрываем соединение
CloseHttp(conn);
end.

как сюда код парсера вставить никак непойму:(

ViNT 23.04.2010 19:42

Ответ: Данные с icq.com
 
Парсить в таком случае нужно строку htmlBody (после вызова htmlBody := GetHttpResponse(conn);).
Вообще со стандартным HTTP в MP бывают глюки, вроде-бы HTTP запросы лучше реализованы в Lib_proweb (сам не пользовался).

Freez 23.04.2010 20:10

Ответ: Данные с icq.com
 
Цитата:

Сообщение от ViNT (Сообщение 145347)
Парсить в таком случае нужно строку htmlBody (после вызова htmlBody := GetHttpResponse(conn);).
Вообще со стандартным HTTP в MP бывают глюки, вроде-бы HTTP запросы лучше реализованы в Lib_proweb (сам не пользовался).

var conn : http;
s : string;
contentType : string;
I:integer;

begin
// Пытаемся установить соединение с сайтом www.icq.com
if not OpenHttp(conn, 'http://www.icq.com/people/full_details_show.php?uin=666666') then Halt;

// Задаем метод передачи данных (другие поддерживаемые методы - это HEAD и POST)
SetHttpMethod(conn, get);

// Указываем название нашего браузера
AddHttpHeader(conn, 'User-agent', 'Opera Mini 9.25');

// Отсылаем HTTP запрос и проверяем код ответа (200 = OK)
if SendHttpMessage(conn) <> 200 then Halt;

// Скачиваем запрашиваемый файл (по-идее это index.html)
s := GetHttpResponse(conn);


DrawText( s , 0, 0);
repaint;
delay (9000);


end.

Получил весь текст в одной строке лишнее че-то не убирается:(


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot