[Résolu][Calc] lire le contenu d'une page web

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Frédérick
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 05 déc. 2017 14:17

[Résolu][Calc] lire le contenu d'une page web

Message par Frédérick »

Bonjour à tous

Je suis un habitué de la programmation de macro sous Excel, ou plutôt j'étais, mais nous sommes passé sous libre office depuis maintenant 2 ans.
J'ai a nouveau ressenti le besoin de faire des macros et je me suis lancé ce matin. Je pensais avancer rapidement sur mon sujet mais je cale complètement sur un truc qui me semble pourtant bête. Je me suis lancé dans une recherche Google qui aurait dû être simple mais ma santé mentale est sur le point d'y rester. Je me résous donc à faire appel à vos lumières.

Mon sujet est le suivant :

Je dispose d'un catalogue de formation sur Intranet. Chaque page de ce catalogue correspond à une formation. L'adresse de la page est en gros au format "http://monIntranet.CodeFormation/
Chacune de ces pages contient tout le descriptif d'une formation.

A côté de ça, j'ai un tableur qui me permet de suivre ma programmation de formations. Ce que je souhaite, c'est qu'à partir du moment où je rentre le code de ma formation dans ce tableur, je puisse ensuite aller chercher automatiquement les informations de la formation présentes sur la page et que je dois retrouver dans mon tableur (intitulé, durée, ...).

J'ai déjà réussi à mettre en place toute la partie consistant à surveiller les modifications dans la feuille, à m'assurer qu'il s'agit d'un code d'apparence correcte et à lancer une macro en fonction de cette modif.

J'ai aussi trouvé le code suivant qui me permet de charger l'URL voulue :

Code : Tout sélectionner


Sub RecuperePageHtml
  Dim oDoc As Object
  Dim oPage As String
  Dim Args(1) As New com.sun.star.beans.PropertyValue

  oPage = "http://user.services.openoffice.org/fr/forum/search.php"

  Args(0).Name = "FilterOptions"
  Args(0).Value = "44"
  Args(1).Name = "FilterName"
  Args(1).Value = "Text - txt - csv (StarCalc)"

  oDoc = starDeskTop.loadComponentFromURL(oPage, "_blank", 0, Args)
End Sub

Et c'est là que je cale. Je n'arrive pas à comprendre ces que devient mon contenu ni comment l'exploiter. Je voudrais placer le texte dans une variable avant d'y chercher les deux ou trois balises qui m'intéressent mais je n'y arrive pas. Je pense comprendre qu'oDoc est un objet et que j'ai besoin d'une méthode pour accéder à son contenu mais je ne sais pas laquelle.
 Ajout : Je précise que quand je lance ma fonction et que j'utilise le témoin, je constate que oDoc à la valeur Null et est de type Object. la valeur Null signifie je crains que l'ouverture elle-même échoue ce qui empire ma situation 

Je vous remercie donc par avance de votre aide

Cordialement

Frédérick

PS : je bosse avec LibreOffice 4.3.7.2 sous Windows 7
Dernière modification par Frédérick le 05 déc. 2017 15:26, modifié 2 fois.
Windows 7
LibreOffice 4.3.7.2
Et en plus, on ne m'a pas demandé mon avis :-(
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9251
Inscription : 28 août 2010 08:45

Re: [Calc] lire le contenu d'une page web.

Message par micmac »

Bonjour,
[b][color=#404080]Frédérick[/color][/b] a écrit :LibreOffice 4.3.7.2 sous Windows 7
Information à faire figurer dans votre signature.
Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] lire le contenu d'une page web.

Message par Hubert Lambert »

Bonjour,

Ton code fonctionne chez moi comme il le doit, c'est-à-dire en ouvrant un nouveau document Calc avec le code html de la page web.
Si tu n'obtiens pas le même résultat, peut-être y a-t-il un problème d'accès au web (proxy ?).

Pour récupérer le contenu d'une page web dans une variable, tu peux essayer ceci (sans gestion d'erreur ni vérification de la taille de la page source) :

Code : Tout sélectionner

sub main
    page = httprequest("http://user.services.openoffice.org/fr/forum/search.php")
    xray page
end sub

function httprequest(url)
    sfa = createunoservice("com.sun.star.ucb.SimpleFileAccess")
    instream = sfa.openFileRead(url)
    txtinstream = createunoservice("com.sun.star.io.TextInputStream")
    txtinstream.setInputStream(instream)
    html = txtinstream.readString(array(), False)
    txtinstream.closeInput()
    httprequest = html
end function
Tu peux également regarder du côté des fonctions SERVICEWEB et FILTREXML (cette dernière n'existe peut-être pas dans ta version de LibreOffice).

Enfin jette peut-être un oeil sur ce fil, où l'auteur utilise la fonction SERVICEWEB (WEBSERVICE en anglais) pour récupérer des infos précises par macro.

Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Frédérick
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 05 déc. 2017 14:17

Re: [Calc] lire le contenu d'une page web.

Message par Frédérick »

Bon sang mais c'est bien sûr. Je suis effectivement derrière un proxy. Mais je n'ai aucun message d'erreur et je n'ai donc pas pensé à ça !
Du coup, la question est : comment je passe le proxy ? Est-ce dans les macros ou simplement en paramétrant LibreOffice ?

Merci pour ce premier coup de main en tout cas.
Windows 7
LibreOffice 4.3.7.2
Et en plus, on ne m'a pas demandé mon avis :-(
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] lire le contenu d'une page web.

Message par Hubert Lambert »

Je pense que ça se règle dans Outils -> Options -> Internet, mais personnellement je n'ai jamais eu à le faire...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Frédérick
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 05 déc. 2017 14:17

Re: [Calc] lire le contenu d'une page web.

Message par Frédérick »

j'essaye ça demain matin et je vous dirai

Cordialement

Frédérick
Windows 7
LibreOffice 4.3.7.2
Et en plus, on ne m'a pas demandé mon avis :-(
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 626
Inscription : 09 août 2017 22:15

Re: [Calc] lire le contenu d'une page web.

Message par Jurassic Pork »

hello,
peut-être aussi un problème du côté du parefeu car c'est LibreOffice qui fait la requête.
Sinon pour récupérer un contenu web dans une variable on peut aussi utiliser l'extension EasyDev avec la fonction get de requests :

Code : Tout sélectionner

Sub RecubWeb()
 util = createUnoService("org.universolibre.EasyDev")
    data = createUnoStruct("org.universolibre.EasyDev.Requests")
    data.Method = "get"
    data.Url = "http://user.services.openoffice.org/fr/forum/search.php"
 '   args = Array( _
 '       Array("verify", False) _
 '   )
 '   data.Args = args
    response = util.requests(data)
    util.msgbox(response.Text)
End Sub
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Frédérick
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 05 déc. 2017 14:17

Re: [Calc] lire le contenu d'une page web.

Message par Frédérick »

Bonjour à tous

L'erreur venait bien du proxy. Le réglage de LibreOffice était sur Aucun alors qu'il fallait le mettre sur système (dans mon cas).
J'ai donc désormais ma page qui se charge dans un nouveau classeur (pour le développement je laisse _blank mais à terme je passerais en _hidden, je ne souhaite pas conserver ce nouveau classeur et je ne souhaite pas que l'utilisateur soit paniqué par ce contenu nouveau).

Pour EasyDev, j'aurai aimer pouvoir l'utiliser mais malheureusement les contraintes liées aux futurs utilisateurs m'empêchent l'utilisation de toute forme d'extension. Je dois me débrouiller avec ce dont je dispose dans la version installée en standard de LibreOffice. Dont acte.

Je me penche donc désormais sur l'exploitation de la feuille créée afin de n'en extraire que les éléments nécessaires.

Merci encore à vous

Cordialement

Frédérick
Windows 7
LibreOffice 4.3.7.2
Et en plus, on ne m'a pas demandé mon avis :-(