J'essaie de télécharger le fichier avec Python en utilisant IE:
from win32com.client import DispatchWithEvents class EventHandler(object): def OnDownloadBegin(self): pass ie = DispatchWithEvents("InternetExplorer.Application", EventHandler) ie.Visible = 0 ie.Navigate('http://website/file.xml')
8 Réponses :
Vous n'avez pas besoin d'utiliser IE. Vous pouvez utiliser quelque chose comme update: strong> Je vois que vous avez mis à jour votre question. Si vous avez besoin d'utiliser un navigateur, alors cette réponse ne vous convient pas. P> urllib2 code>. D'autre part, vous devrez peut-être également passer un cookie de session de votre session authentifiée. P> p>
Il / elle a dit "Je dois utiliser un navigateur, pas l'urlication ou la mécanisée, car avant de télécharger le fichier, j'ai besoin de passer de nombreuses choses Ajax."
Ce n'était pas dans la question initiale.
Avant de commencer à télécharger, j'ai besoin de vous connecter sur le site Web. Ensuite, cliquez sur certains liens qui démarreront des scripts Java. Les scripts écrivent du contenu du site Web (sans recharger). Ceci crée un nouveau bouton sur le site Web qui permet de télécharger mon fichier ... Donc je ne pense pas que je puisse utiliser urlib2 ...
Malheureusement, "bouton" est: Exporter sélectionné
@Adam: Vous pouvez utiliser Urllib, mais cela signifie inspecter et inverser l'ingénierie des appels JavaScript et Ajax. En plus d'être douloureux, il est fragile: si le site change vos pauses d'applications. Envisagez de demander au propriétaire du site de fournir une interface alternative mieux adaptée à l'automatisation (comme WebServices), si cela n'est pas possible, bonne chance!
Merci Paulo. Je ne travaille plus sur cela. Les choses Ajax m'ont tué. ;) Mais qui sait. Peut-être que je vais revenir. :)
Si vous ne pouvez pas contrôler Internet Explorer à l'aide de son interface COM, je suggère d'utiliser le AutoIt Com pour contrôler son interface graphique de Python. P>
Autolt a l'air agréable. Mais je veux écrire une petite application qui vient d'obtenir ce fichier et d'utiliser des données de celui-ci. Je préfère une petite solution intelligente ...
Je ne sais pas comment dire cela bien, mais cela ressemble à l'idée logicielle la plus impraticable dans la mémoire récente. Python est beaucoup plus capable d'effectuer des appels Ajax que c'est-à-dire. P>
Pour accéder aux données, oui, vous pouvez utiliser em> utiliser Pour un projet, je devais écrire un programme Python qui simulerait un navigateur et se connecterait à l'un des différents réseaux sociaux urllib code> et
urllib2 code>. S'il y a des données JSON dans la réponse, il y a la bibliothèque
JSON code>; De même pour XML et HTML, il y a
beauxoup code>. p>
On dirait que vous n'avez jamais expérimenté les demandes d'ingénierie inverse des demandes d'Ajax pour une certaine application de 3ème partie remplie de widgets bizarres «Ajax» - Pure Hell.
@Paulo - Avez-vous lu ma réponse? Oui, j'ai écrit 20 ou 30 racleurs, entraînant peut-être 100 demandes d'Ajax ou de page qui devaient être modifiées inverse - une grande partie de mon travail depuis plus d'un an. Comme je l'ai dit, ils ne sont pas faciles, comme je l'ai dit, mais par rapport à la tentative de le faire à travers un objet COM de Freakin '? C'est comme essayer de choisir un verrou par rapport à essayer de choisir un verrou portant des mitaines de four i>.
httpfox est bon pour inverser-ingénierie de ce genre de chose.
Merci. J'utilise Firebug, où l'option Net semble être assez équivalente à httpfox, mais à chacune ses siennes.
Salut. Si vous pouvez du tout, oui, allez avec des routines réseau Pythons. Mais considérez mon cas - nous utilisons un proxy qui est authentifié avec NTLM. Pour une raison quelconque, je ne peux pas obtenir de demandes_ntlm de travailler avec Py2exe - du tout. Je dois trouver autre chose, essayant de trouver une solution de contournement maintenant. Ce rant était juste de dire, il y a des cas de bord ... :)
J'ai quelque chose comme ça (une affrontement de la 3ème partie avec beaucoup de contrôles bizarres «Ajax»), et j'utilise Imacros Plugin pour Firefox pour effectuer une certaine automatisation. Mais je fais des inserts par lots, pas des téléchargements. P>
Vous pouvez essayer d'enregistrer, éditer et rejouer les entrées envoyées par une session VNC. Regardez quelque chose comme http://code.google.com/p/python-vnc- Viewer / pour l'inspiration. P>
Une option pourrait également être d'intégrer votre propre navigateur.
c'est par exemple possible avec qt via pyqt (gpl) ou Pyside (LGPL). Là, vous pouvez intégrer le moteur Webkit. Vous pouvez ensuite afficher la page dans un QwebView et laissez l'utilisateur à naviguer à votre Téléchargez et filtrez ce événement ou utilisez un simple Qwebpage où tout pourrait être automatisé et rien doit être montré du tout. p>
et Webkit devrait être suffisamment puissant pour Faites tout ce que vous voulez. p>
Exemple très basique: P>
import sys from PySide import QtCore, QtGui, QtWebKit url = 'http://developer.qt.nokia.com/wiki/PySideDownloads/' class TestKit(QtCore.QObject): def __init__(self, app): self.page = QtWebKit.QWebPage() self.page.loadFinished.connect(self.finished) self.page.mainFrame().load(QtCore.QUrl(url)) self.app = app def finished(self, evt): # inspect DOM -> navigate to next page or download print self.page.currentFrame().documentElement().toInnerXml().encode( 'utf-8') # when everything is done self.app.quit() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) t = TestKit(app) sys.exit(app.exec_())
pamie peut-être p>
p.a.m.i.e. - Stands pour Python Module automatisé pour I.e. P>
L'utilisation principale de Pamie est pour tester Web sites par lesquels vous automatisez le Client Internet Explorer utilisant le Langue de script Pamie. Pamie est Pas un moteur de lecture d'enregistrement! p>
pamie vous permet d'automatiser i.e. par Manipuler l'objet de document I.e. Modèle via com. Cet outil gratuit est pour Utiliser par ingénieurs d'assurance qualité et développeurs. p> blockQuote>
Cela fonctionne pour moi tant que les dialogues IE sont au premier plan et que le fichier téléchargé n'existe pas déjà dans le répertoire "Enregistrer sous":
C'est certainement absolument la dernière façon dont je le ferais normalement, mais aujourd'hui, je devais recourir à la frapper pour avoir quelque chose de travail. J'ai 10 ans, la réponse de @ cgohlke ne fonctionnera pas (pas de texte de fenêtre). Toutes les tentatives d'obtention d'une version appropriée de l'authentification de la clientèle ont échoué, il a fallu de retour à ce sujet. Peut-être que ça va aider quelqu'un d'autre qui est également à la fin de leur attache. mais homme, est-ce horrible! P> p>
Je crois que c'est un comportement défini par l'utilisateur dans les préférences.
J'ai regardé les API de MSDN.MicRosoft. Com / FR-US / Bibliothèque / AA752084% 28V.85% 29.aspx # et msdn.microsoft.com/en-us/library/aa752085%28vs.85%29.aspx# et je ne pense pas qu'il soit possible de sauvegarder le fichier .