![]() |
|
|
|
|
#1
|
||||
|
||||
|
Надо зайти по определенной ссылке и читать с исходника сайта значение которые я выделил жирным цветом и добавить их в Memo1...
Код:
<tr> <td> <span id="_ctl0_lblNumber" class="Label">№:</span> </td> <td> <span id="_ctl0_txtNumber" class="Label">1</span> </td> </tr> <tr> <td> <span id="_ctl0_lblSubName" class="Label">Имя Фамилия:</span></td> <td> <span id="_ctl0_txtSubName" class="Label">нет данных.</span> </td> </tr> <tr> <td> <span id="_ctl0_lblAddress" class="Label">Адресс:</span></td> <td> <span id="_ctl0_txtAddress" class="Label">нет данных.</span> </td> </tr> <tr> lmikle: пользуемся тегами!!! Такое возможно??? |
|
#2
|
|||
|
|||
|
Да, возможно.
Тебе надо загрузить страничку в MSHTML и дальше по DOM по id получить значения соответсвуюших тегов. |
|
#3
|
||||
|
||||
|
Спасибо за ответ - но можно поподробнее - можешь пример покозать как это делаеться??
Последний раз редактировалось Electronic_Arts, 14.01.2009 в 14:16. |
|
#4
|
|||
|
|||
|
Ну, под рукой готового примера нет.
я тут как-то выкладывал архив, где страничка грузилась в 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
|
|||
|
|||
|
Я пользуюсь такой структурой - автозаполнялка, можно и наоборот считывать значения...
Код:
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; |