Intéraction avec page Web [VB.NET] - C#/.NET managed - Programmation
Marsh Posté le 04-09-2014 à 13:47:55
Piloter un navigateur web avec des sendkey (envoi de touche clavier) afin d'arriver aux données souhaitées ? Après, une récupération de la page HTML et une analyse de son contenu pour extraire ce qui t'intéresse
Marsh Posté le 04-09-2014 à 16:05:20
Tout dépend de ce que tu veux exactement faire, surtout de l'environnement dans lequel tu évolues.
Si l'environnement n'est pas définit (tu installes sur n'importe quel type de plateforme), effectivement la solution des touches clavier, voir de IE embarqué est certainement la meilleure.
Si tu es dans un environnement connu (cad tous les utilisateurs ont le même navigateur), tu peux obtenir de bien meilleure solution, notamment via par exemple html5 WebDriver:
https://dvcs.w3.org/hg/webdriver/ra [...] -spec.html
Ou encore, tu peux tenter de piloter une version un peu plus ancienne (puisque WebDriver est inspiré de Selenium), via Selenium WebDriver...
Tu peux aussi avoir accès à des controles activeX pour certains navigateurs.
Il y a aussi l'embed comme je disais, par exemple sous Java tu as http://www.teamdev.com/jxbrowser ou sous Node.JS http://phantomjs.org/, ou sous vb.net http://msdn.microsoft.com/fr-fr/li [...] 10%29.aspx
Tu as encore une troisième catégorie que sont les "faux clients" comme beautiful soup sous python: http://www.crummy.com/software/BeautifulSoup/
Bref il y a de quoi faire, décrit si possible un peu plus ce qu'il y a autour du code: version du .NET, tes contraintes techniques (un seul programme ? Plusieurs languages possibles ?), et si tu as des specs détaillées sur les utilisateurs...
Marsh Posté le 05-09-2014 à 06:00:14
Je vais regarder plus en détail ces liens MERCI
En faite je dois récupérer le relevé de compteur d'impression sur mes imprimantes. Le soucis c'est que je dois en avoir 130 et la solution était de rentrer sur chacune des adresse IP et copier/coller le résultat dans un documents...
Sur les machine de type Lexmark je n'ai aucun problème car c'est une page HTML très simple, sur celle de type Ricoh ou OKI ba les codes sources sont inexploitable
J’opère actuellement comme ceci :
Le code ne doit pas être optimisé car je suis en phase de test
Fonction pour vérifier si l'imprimante est allumée
Code :
|
Fonction pour récupérer le compteur
Code :
|
Bouton
Code :
|
Marsh Posté le 05-09-2014 à 10:50:06
Question bête : tu peux pas faire une requête de type SNMP pour récupérer la MIB qui contient le compteur de l'imprimante
Ca serait quand même plus pro...
Marsh Posté le 05-09-2014 à 11:16:43
Oui tu as raison mais la DSI de ma boîte ne me donne pas les billes pour moi faire ce genre de chose sur le réseau
Sinon j'ai réussi a intercepter les URL des pages en questions avec les données que je voulais
Le code derrière est vraiment moche
- Pas de "name"
- Pas d'Id
- Rien pour distinguer le bon champs
Il faut que je trouve la bonne ligne dans mon code source et faire un bon découpage pour récupérer mon compteur lol
du genre :
Code :
|
Si il y'a une solution, je veux bien mais je suis un peu sceptique
En tout cas MERCI de vous êtes penchés sur mon problème.
J'attendrai demain pour mettre mon post en [RÉSOLU] si toute fois il y'a un moyen de faire ça plus proprement.
Marsh Posté le 05-09-2014 à 11:43:42
Tu devrais plutôt utiliser le parser XML de l'activeX IE. Pour manipuler le DOM (HTML, c'est du XML à peu de chose près), ça serait plus pratique et moins hasardeux que de faire un simple découpage de chaîne...
Et pour la DSI, faut pas déconner, qq requêtes SNMP de temps en temps ne va pas plomber leur réseau En plus, en bande-passante, c'est moins couteux du SNMP que d'appeler pleins de pages html...
Marsh Posté le 05-09-2014 à 12:31:38
As tu sous le coude un exemple de cette utilisation car je ne l'ai jamais fait et je ne trouve pas exactement sur le net mise a part des plugins pour IE
Marsh Posté le 05-09-2014 à 12:44:21
Hum je rejoint rufo, le parsing HTML est pas forcément la meilleur solution...
Sinon, si cela peut t'aider sous Java il existe un truc que j'ai utilisé, un time saver de dingue: jsoup.
Et bingo sous .NET il existe un portage NSoup (jamais testé, mais si c'est un portage ca devrait être aussi fiable je pense):
http://www.developerfusion.com/project/98472/nsoup/
Ca te donne quelque chose de proche de jQuery. Cad tu peux faire:
"table tr p a span" et il va te sortir tous les trucs qui trouvent en relation avec ce path dans le DOM...
Pour snmp il y en a des pelles, mais souvent en anglais:
http://www.snmpsharpnet.com/?page_id=105
Marsh Posté le 08-09-2014 à 07:10:41
Yeap merci Devil sTiger !
Dans un premier temps je vais resté sur mon découpage car je ne vais pas avoir le temps d'étudier cette solution mais je l'ai mis dans mes note pour une prochaine appli.
La chance que j'ai actuellement est que mes imprimantes OKI et Ricoh ont une page web bien structurées avec des Id là ou il faut et qui vont bien.
J'ai tout simplement fait une fonction part marque.
En tout cas un grand merci
Marsh Posté le 08-09-2014 à 10:47:58
Le pb, c'est que le jour où y'a un update du firmware d'une des imprimantes qui vient à chanegr la structure de ta page web ou si ton parc compte une imprimante d'une autre marque/modèle qui n'a pas cette page web, t'es dans la merde Une solution à base de SNMP serait beaucoup moins hasardeuse et plus pérenne dans le temps (et plus facile à maintenir aussi)...
Marsh Posté le 04-09-2014 à 08:59:59
Bonjour,
J'arrive bien a récupérer des infos sur une page web mais pas sur toutes.
Le soucis est que sur certaines pages pour moi arriver aux données, il faut cliquer sur un bouton tout simple mais derrière celui-ci c'est du javascript... Sur le "code source" de la page, mes données n'y sont pas.
Est-ce que quelqu'un aurait une piste pour me dépatouiller de cette galère ?
Merci
Ps : Je ne sais pas si j'ai bien réussi à me faire comprendre lol ^^