Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2009, 00:46
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Работа с сайтом

Надо зайти по определенной ссылке и читать с исходника сайта значение которые я выделил жирным цветом и добавить их в Memo1...

Код:
<tr>
<td>
<span id="_ctl0_lblNumber" class="Label">№:</span>&nbsp;</td>
<td>
<span id="_ctl0_txtNumber" class="Label">1</span>&nbsp;</td>
</tr>
<tr>
<td>
<span id="_ctl0_lblSubName" class="Label">Имя Фамилия:</span></td>
<td>
<span id="_ctl0_txtSubName" class="Label">нет данных.</span>&nbsp;</td>
</tr>
<tr>
<td>
<span id="_ctl0_lblAddress" class="Label">Адресс:</span></td>
<td>
<span id="_ctl0_txtAddress" class="Label">нет данных.</span>&nbsp;</td>
</tr>
<tr>

lmikle: пользуемся тегами!!!
Такое возможно???
Ответить с цитированием
  #2  
Старый 14.01.2009, 01:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, возможно.
Тебе надо загрузить страничку в MSHTML и дальше по DOM по id получить значения соответсвуюших тегов.
Ответить с цитированием
  #3  
Старый 14.01.2009, 14:14
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Спасибо за ответ - но можно поподробнее - можешь пример покозать как это делаеться??

Последний раз редактировалось Electronic_Arts, 14.01.2009 в 14:16.
Ответить с цитированием
  #4  
Старый 14.01.2009, 18:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, под рукой готового примера нет.
я тут как-то выкладывал архив, где страничка грузилась в TWebBrowser и там внутри что-то искалось. фактически, там получалась ссылка на документ и далее можно лазить по дереву тегов, так же, как и в TXMLDocument.

Вот как получалась ссылка:
Код:
procedure TMainForm.MainWndDownloadComplete(Sender: TObject);
var
  Document : IHTMLDocument2;
  DocText : String;
begin
  If Not FEnableRobot Then Exit;
  Document := MainWnd.Document as IHtmlDocument2;
  If Document <>  Nil Then
    Begin
      DocText := (Document.all.Item(NULL, 0) as IHTMLElement).OuterHTML;
    End;
end;

Здесь просто получается документ в виде текста, но от документа растет коллекция элементов - можно лазить по ней.
Ответить с цитированием
  #5  
Старый 15.01.2009, 11:20
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию

Я пользуюсь такой структурой - автозаполнялка, можно и наоборот считывать значения...
Код:
uses
  MSHTML_TLB;

// first navigate to tipspage

procedure TForm1.Button1Click(Sender: TObject);
begin
  Webbrowser1.Navigate('http://www.swissdelphicenter.ch/en/tipsuchen.php');
end;

// Try to access IE instance and fill out the search field with
// a text and click the search button

procedure TForm1.Button3Click(Sender: TObject);
var
  hIE: HWND;
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  Document: Variant;
  k, m: Integer;
  ovElements: OleVariant;
  i: Integer;
begin
  ShellWindow := CoShellWindows.Create;
  // get the running instance of Internet Explorer
  for k := 0 to ShellWindow.Count do
  begin
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then
      Continue;
    // QueryInterface determines if an interface can be used with an object
    spDisp.QueryInterface(iWebBrowser2, WB);

    if WB <> nil then
    begin
      WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      if iDoc1 <> nil then
      begin
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin
          Document := WB.Document;

          // count forms on document and iterate through its forms
          for m := 0 to Document.forms.Length - 1 do
          begin
            ovElements := Document.forms.Item(m).elements;
            // iterate through elements
            for i := 0 to ovElements.Length - 1 do
            begin
              // when input fieldname is found, try to fill out
              try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'text') = 0) then
                begin
                  ovElements.item(i).Value := 'FindWindow';
                end;
              except
              end;
              // when Submit button is found, try to click
              try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'SUBMIT') = 0) and
                  (ovElements.item(i).Value = 'Search') then
                    // Suchen fьr German
                begin
                  ovElements.item(i).Click;
                end;
              except
              end;
            end;
          end;
        end;
      end;
    end;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter