2010-07-21 4 views
1

Je fais un peu (ou du moins j'espère que c'est un peu) une faveur pour un ami, mais je n'ai pas utilisé Delphi depuis une dizaine d'années ... et mes recherches n'ont pas été faites Ce que j'essaie de faire est de GET une URL, puis analyser le code HTML pour trouver des informations dont il a besoin. J'espère quelque chose comme ceci (en python) fileHandle = urllib2.urlopen(urlStr) et fileHandle recevrait le HTML de la page que j'ai demandée. J'utilise Linux, avec Lazarus et Free Pascal, il utilise Delphi 7 (si je me souviens bien) si ça compte.Ouvrir une URL en utilisant Delphi

Merci.

+0

Si c'est un coup sur une seule page, pourquoi ne pas utiliser votre navigateur, et enregistrez le fichier html, puis les analyser plus tard. –

Répondre

6

Avec Indy, vous pouvez utiliser le composant TidHttp.

var 
    http : TidHttp; 
    page : String; 
begin 
    http := TidHttp.Create(nil); 
    try 
    page := http.get(URL); 
    finally 
    http.Free; 
    end; 
end; 

Get a plusieurs versions surchargées si vous désiriez le contenu dans d'autres formats et doivent passer informaiton supplémentaires.

+0

Notez que cela fonctionne avec Lazarus aussi, seulement en règle générale, non Windows FPC fonctionne uniquement avec Indy10. –

0

Options:

  1. Appel wget (que vous devrez installer sur Windows) pour télécharger la page dans un fichier texte et puis ouvrez cela.

  2. Utilisez Indy ou Synapse si vous voulez le faire entièrement en Delphi.

(j'utilise Synapse pour faire ce genre de chose tout le temps).

0

Utilisez un navigateur TWebbrowser dans votre application. Vous pouvez obtenir la valeur de la zone de texte ou cliquer sur un bouton dans la page.

var 
    ovElements: OleVariant; 
    i: Integer; 
begin 
    ovElements := WebBrowser1.OleObject.document.Forms.item(0).elements; 
    for i := 0 to (ovElements.Length - 1) do 
    if (ovElements.item(i).Name = 'ASPxButton1') 

     (ovElements.item(i).Name = 'ASPxButton1') then 
     ovElements.item(i).Click; 

OU

WebBrowser1.OleObject.document.Forms.item(0) 
     .elements.item 
     ('ASPTEXTBOXNAME').value; 
Questions connexes