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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 19:14   #1
Pein
 
Регистрация: 23.02.2009
Сообщений: 5
Вопрос Простой парсинг вконтакте

Здравствуйте. Я полный ноль в парсинге поэтому прошу помочь. Есть форма, на ней webbrowser, в котором открыта страница http://vkontakte.ru/feed.php. Нужно что бы каждое значение {count=0} помещалось в отдельный tedit. Помогите реализовать.
Pein вне форума Ответить с цитированием
Старый 08.04.2011, 09:53   #2
Pein
 
Регистрация: 23.02.2009
Сообщений: 5
По умолчанию

Нашёл способ.
Цитата:
procedure TForm1.Button4Click(Sender: TObject);
var
Document: IHTMLDocument2;
begin
Document := WebBrowser1.Document as IHtmlDocument2;
if Document <> nil then
Memo1.Text := ( Document.all.Item( NULL, 0 ) as IHTMLElement ).OuterHTML;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
StrPars,St:WideString;
FeedSource: string;
begin
FeedSource:=memo1.Text;
Delete(FeedSource, 1, Pos('messages{count=', FeedSource) + Length('messages{count=') - 1);
Delete(FeedSource, Pos('},', FeedSource), Length(FeedSource));
label1.Caption:='Сообщения: '+FeedSource;
end;
Но это только если получить исходный код с webbrowser в memo. А как сделать что бы сразу получить код с webbrowser?
Pein вне форума Ответить с цитированием
Старый 08.04.2011, 11:12   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Можно=)

Код:
  HtmlSrc:AnsiString; //Global var

implementation

{$R *.dfm

procedure TForm1.Button4Click(Sender: TObject);
var
Document: IHTMLDocument2;
begin
Document := WebBrowser1.Document as IHtmlDocument2;
if Document <> nil then
HtmlSrc := ( Document.all.Item( NULL, 0 ) as IHTMLElement ).OuterHTML;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
StrPars,St:WideString;
begin
Delete(HtmlSrc, 1, Pos('messages{count=', HtmlSrc) + Length('messages{count=') - 1);
Delete(HtmlSrc, Pos('},', HtmlSrc), Length(HtmlSrc));
label1.Caption:='Сообщения: '+HtmlSrc;
end;
я бы вообще так зделал:
Код:
uses ...,idHTTP;

procedure dosmth;
const
  ReqLink = 'http://vkontakte.ru/feed.php';
var
  http: TidHTTP;
  Answer: TstringList;
  s:string;
begin
  Answer := TStringList.Create;
  http := TIdHTTP.Create(nil);
  try
    Answer.Text:=http.Get(ReqLink);
    s:=Answer.Text;
    Delete(s, 1, AnsiPos('messages{count=', s) + Length('messages{count=') - 1);
    Delete(s, AnsiPos('},', s), Length(s));
    ShowMessage('Сообщений=' + s);
  finally
    FreeAndNil(Http);
    FreeAndNil(Answer);
  end;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 08.04.2011, 17:41   #4
Pein
 
Регистрация: 23.02.2009
Сообщений: 5
По умолчанию

Второй вариант хорош, но там нужна авторизация. А webbrowser как раз для этого подходит
Pein вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг друзей вконтакте SAMY93 Работа с сетью в Delphi 1 21.11.2010 23:51
Парсинг id Вконтакте Lemo Помощь студентам 1 16.07.2010 15:25