Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Парсинг (http://forum.oszone.net/showthread.php?t=186577)

Miko 27-09-2010 04:50 1505299

Парсинг
 
Здравствуйте уважаемые программисты.

Программированием увлекаться начал не так давно,пришла пора.. И мне понадобилась работа с интернетом.

1)
Был в поиске,нашел пример того что мне нужно.

Код:

var
s : string;
begin
s := IdHTTP.Get('http://delphistudio.ru/');
Label1.Caption := Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);

Практически все понятно. Единственно что я не могу понять,что значит:
+ 7
-7

На сайте есть такой код:

<a href='/uinfo/?uid=38014' class='link' title = 'Смотреть анкету персонажа ivrus'>ivrus</a>

Подскажите пожалуйста как мне скопировать "/uinfo/?uid=38014" - ?

И еще,если кому нибудь из вас не трудно оставьте свою аську для пары вопросов.
Или может кто нибудь мне литературу какую нибудь посоветует.. (Сам искал,не нашел не чего подходящего.)
За ранее вам благодарен.

lxa85 27-09-2010 09:26 1505364

Miko, такое ощущение, что строка Label1.Caption не верна. Толи кавычек не хватает, толи чего.
Какой должен быть результат выполнения?
Цитата:

Цитата Miko
Подскажите пожалуйста как мне скопировать "/uinfo/?uid=38014" - ? »

Находишь "/uinfo/?uid=" Далее по символьный анализ до достижения не цифрового символа.

Miko 27-09-2010 09:37 1505373

Нет с Label все нормально. Данный пример работает отлично.

Цифры это ID пользователя. Тут дело в том что:
Нужно посмотреть имя пользователя и скопировать "/uinfo/?uid=38014" - Если точней то..

<a href='/uinfo/?uid=38014' class='link' title = 'Смотреть анкету персонажа ivrus'>ivrus</a>
В конце слово "IVRUS" - Это ник пользователя. (Его то мы и будем искать.)
'/uinfo/?uid=38014' - Цифры это ID пользователя. (Они то нам и нужны.)

Пользователь вводит в Edit ник.. жмет кнопку.
После этого ему в Label или еще куда нибудь выподает '/uinfo/?uid=38014' ну или просто цифры.

Вот мне бы понять как скопировать,пример выше есть.. а как с ним работать я не знаю.
Только начал работать с интернетом,я вообще в Delphi не так давно.
Во и хотелось бы услышать ответ о примере,что к чему там работает. (Автору примера писал,он игнорит.)

Вам конечно огромное спасибо за ответ,но.. я не знаю как сделать это анализ.
Иначе я бы не стал спрашивать как мне достать эту строку.

Хотя бы подскажите что читать где искать,остальное я сам сделаю.


//
Все,понял что и как работает.. Проблему решил.
Спасибо за помощь.

lxa85 27-09-2010 09:56 1505384

Miko, результат работы строки Label1.Caption приведи пожалуйста.
Для понимания, желательно его еще и протрассировать (выполнить по шагам, клавиша F7 емнип)
Окно отслеживания изменения переменных - Watches. Во меню отладки должно быть.
string если я правильно помню, вмещает в себя 255 символов.
Ты уверен, что " <a href='/uinfo/?uid=38014' class='link' title = 'Смотреть анкету персонажа ivrus'>ivrus</a> " туда влезет?
Попробуй может загрузить страничку в Memo (компонент).
Посмотри в справке, что тебе возвращают функции pos, copy.
Посмотри работу с циклами с условием repeat until, while

Цитата:

Цитата Miko
Все,понял что и как работает.. Проблему решил.
Спасибо за помощь. »

Расскажи как, интересно же.

Miko 27-09-2010 10:09 1505390

Я не копировал весь текст..
Просто понял что означают цифры:
Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);
В итоге я копирую тот текст который мне нужно. А с остальным я уже разберусь.

Я вот сейчас протестировал и опять косяк.. Строка:
Label1.Caption := Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);
Находиться в середине всего кода,вот как ее найти я уже не знаю.
А так,основное что мне нужно было я сделал.

//
Как я уже и говорил я не очень то селен в Delphi...
По этому нормально обьяснить не могу...

lxa85 27-09-2010 10:17 1505393

Что же за молодежь такая пошла?
Miko,
Цитата:

Цитата lxa85
результат работы строки Label1.Caption приведи пожалуйста. »

А еще лучше весь код целиком, тегом code (#) оформленный.
Трассировку программы выполнял?
Label.Caprtion имеет тип text и мне очень интересно знать, как он реагирует на +7
Цитата:

Цитата Miko
А так,основное что мне нужно было я сделал. »

Ага, сделал все кроме главного ;) Программа то не работает.

Miko 27-09-2010 10:25 1505401

Увы.. работает.

На +7 не ругается. Кстати,для примера.. скачайте себе Lite версию DELPHI и просто скопируйте код который представлен в первом посту. И вы сами убедитесь что все прекрасно работает. Потом зайдите на сайт(Он тоже указан в первом посте.) и посмотрите первый тег.. там будет написано тоже самое что и в Label.

Увы,но она работает. Как я уже и говорил,я не знаю как указать нужную мне строку. Определенный текст копировать могу.. Вот только не задача,копирует он почти весь код на сайте. Потому что не указана строка.
А в примере он копирует первую строку... и все работает на УРА.

Уважаемый "lxa85" не могли бы вы мне дать вашу ICQ - ?

lxa85 27-09-2010 10:46 1505418

Цитата:

Цитата Miko
Уважаемый "lxa85" не могли бы вы мне дать вашу ICQ - ? »

см профиль. У меня авторизация, для начала пиши транслитом.
Lite себе сейчас скачивать не буду. Пока некогда с ним возиться.


Время: 19:17.

Время: 19:17.
© OSzone.net 2001-