Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 23:33   #1
Ломоносов
 
Регистрация: 28.02.2013
Сообщений: 8
По умолчанию Delphi| Парсинг

Привет всем форумчане, я новичок, и я хочу узнать как спарсить html страничку с помощью delphi 7, искал в интернета но не нашел, подскажите как спарсить например эту строку " Работа с сетью в Delphi",
PHP код:
<span class="navbar">&gt; <a href="forumdisplay.php?f=3">Работа с сетью в Delphi</a></span
помогите новичку
Ломоносов вне форума Ответить с цитированием
Старый 07.03.2013, 09:31   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Copy
Pos
Delete
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.03.2013, 13:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дополню ответ примером кода (он, конечно, далёк от оптимального, но примерно суть отражает...)

Код:
uses ..... StrUtils;

procedure TForm3.Button1Click(Sender: TObject);
const
  Pattern1  = 'href="forumdisplay.php?f=';
var
  s, sMatch : string;
  i1, i2 : integer;
begin
  s := Memo1.Text;  // в строку s помещаем исходный код...

  i1 := Pos(AnsiUpperCase('<a'), AnsiUpperCase(s));
  i2 := PosEx(AnsiUpperCase(Pattern1), AnsiUpperCase(s), i1+1);
  if (i1>0) and (i2>0) then begin
    i1 := PosEx('>', s, i2 + Length(Pattern1));
    i2 := PosEx(AnsiUpperCase('</a>'), AnsiUpperCase(s), i1);
    if (i1>0) and (i2>i1) then begin
      sMatch := Copy(s, i1+1, i2-i1-1);
      ShowMessage('Найдено: '+ sMatch);
    end
    else
      ShowMessage('#Error: Не найден завершающих тег (</a>)')
  end
  else
    ShowMessage('Требуемый шаблон (<a '+Pattern1+') не найден');
end;

Последний раз редактировалось Serge_Bliznykov; 07.03.2013 в 13:10.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2013, 20:57   #4
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

Вот еще тебе такой способ, с ним будешь парсить все =)
после
Код:
implementation

{$R *.dfm}
вставляешь функцию
Код:
function Pars(strB,strE,str:string):string;
var
  b,e:integer;
begin
  b:=pos(strb,str)+Length(strb);
  e:=pos(strE,str);
  if (b=Length(strb))or(e=0) then
    Result:=''
  else
    Result:=copy(str,b,e-b);
end;
далее уже пример работы
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
site:string;
begin
site:=idhttp1.Get('http://programmersforum.ru/showthread.php?t=229617'); //получаем код старницы
edit1.text:=Pars('<a href="forumdisplay.php?f=3">' , '</a>', site);//выводим в эдит всю информацию что стоит между (<a href="forumdisplay.php?f=3">) и (</a>), в нашем случае получаем "Работа с сетью в Delphi"
end;
Удачи)
megostudent вне форума Ответить с цитированием
Старый 29.04.2013, 22:57   #5
ingushmen
Пользователь
 
Аватар для ingushmen
 
Регистрация: 13.11.2010
Сообщений: 13
По умолчанию

И так можно. Но код выше лучше.

Код:
function Pars(HTML,s1,s2:string):string;
begin
Delete(html, 1, Pos(s1, html) + Length(s1) - 1);
Result:=Copy(html, 1, Pos(s2, html) - 1);
end;

begin
showmessage(Pars(IdHTTP1.Get('http://programmersforum.ru/forumdisplay.php?f=1'),'f=3"><strong>','</strong>'));
end;
ingushmen вне форума Ответить с цитированием
Старый 29.04.2013, 23:20   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Могу добавить, что парсинги с Delete в общем случае тормознее парсингов с Pos и PosEx, хотя исходник с ними скорее всего и покороче можно сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
YOUTUBE delphi (парсинг) DjDram Работа с сетью в Delphi 24 07.12.2012 21:11
Парсинг XML в Delphi admroot Общие вопросы Delphi 6 04.02.2012 20:24
[Delphi] Парсинг ссылки из письма с email'а stalker_1894 Помощь студентам 1 08.11.2010 15:49
XML (парсинг MSXML2_TLB.pas) и Delphi 2009 S_Yevgeniy Помощь студентам 0 17.09.2009 18:22
XML (парсинг NativeXml ) и Delphi 2009 S_Yevgeniy Помощь студентам 13 17.09.2009 15:56