2009-08-04 10 views
0

Wenn ich versuche, eine Datei von irgendeiner Webseite mit Python automatisch herunterzuladen, Ich bekomme Webpage Dialogfenster (ich benutze IE). Das Fenster hat zwei Schaltflächen, z. B. "Weiter" und "Abbrechen". Ich kann nicht herausfinden, wie man auf den Continue Button klickt. Das Problem ist , dass ich nicht weiß, wie Webpage Dialog mit Python zu steuern. Ich habe versucht, winGuiAuto verwenden, um die Steuerelemente des Fensters zu finden, aber es erkennt keine Schaltfläche Typ Steuerelemente ... Eine Idee?Wie man Webpagedialog mit Python steuert

Sasha

Eine Klärung meiner Frage:

Mein Ziel ist es Bestandsdaten von einer bestimmten Website zum Download bereit. Ich muss es für viele Aktien durchführen, also brauche ich Python, um es für mich auf eine repetitive Weise zu tun. Diese spezielle Website exportiert die Daten, indem sie sie in eine Excel-Datei lädt, indem sie auf einen Link klickt. Aber nachdem ich auf den Link geklickt habe, erhalte ich ein Dialogfeld, das mich fragt, ob ich sicher bin, dass ich diese Datei herunterladen möchte. Dieser Webseiten-Dialog ist mein Problem - es ist keine HTML-Seite und es ist kein normales Windows-Dialogfeld. Es ist etwas anderes und ich kann nicht konfigurieren, wie man es mit Python steuert. Es hat zwei Tasten und ich muss auf einen von ihnen klicken (d. H. Weiter). Es scheint, als wäre es eine spezielle Art von Fenster im IE implementiert. Es zeichnet sich durch seinen Titel aus, der wie folgt aussieht: Webseite Dialog - Download blablablabla. Wenn ich auf Fortfahren manuell klicke, öffnet sich ein normales Windows-Dialogfeld (Öffnen, Speichern, Abbrechen), von dem ich weiß, wie es mit der winGuiAuto-Bibliothek umgehen soll. Versucht, diese Bibliothek für das Dialogfeld der Webseite ohne Glück zu verwenden. Versuchte, die Schaltflächen mit Autoit Info-Tool zu erkennen - auch kein Glück. In der Tat, vielleicht sind dies keine Schaltflächen, sondern Links, aber ich kann die Links nicht sehen und es ist kein Quellcode sichtbar ... Was ich brauche, ist jemand, der mir sagt, was diese Webseite ist und wie man sie steuert Python. Das war meine Frage.

+0

Ich verstehe nicht, was Sie fragen ... können Sie bitte genau erklären, was Sie versuchen, mit einem Codebeispiel zu tun? –

+2

Sie erwähnen Python, also verwenden Sie etwas Code? kannst du das posten? –

+0

Versuchen Sie, eine Datei mit einem Python-Skript herunterzuladen?Wenn dies der Fall ist, öffnen Sie die Seite mit Ihrem Browser, klicken Sie auf "Weiter" und sehen Sie, was passiert. Erhalten Sie die Datei dann? Vielleicht solltest du einen anderen Ansatz ausprobieren und Python einfach den Download-Job machen lassen, während du selbst die finale URL dafür findest? – kender

Antwort

0

Sie können nicht, und Sie wollen nicht. Wenn Sie eine Frage stellen, versuchen Sie zu erklären, was Sie erreichen möchten und nicht nur die Aufgabe unmittelbar vor Ihnen. Sie bellen wahrscheinlich den falschen Weg. Es gibt eine andere Art zu tun, was Sie versuchen zu tun.

0

Der Titel "Webseiten-Dialog" weist darauf hin, dass es sich um ein Javascript-generiertes Eingabefeld handelt, weshalb Sie nicht über winGuiAuto darauf zugreifen können. Was Sie direkt fragen, ist wahrscheinlich nicht möglich.

Aber die Annahme, dass, was Sie tun möchten, ist nur diese Daten von der Website herunterladen, warum verwenden Sie überhaupt die GUI? Python bietet alles, was Sie zum Herunterladen von Dateien aus dem Internet benötigen, ohne den IE zu kontrollieren. Der Prozess wird Sie folgen:

  1. Laden Sie die Host-Seite
  2. die URL für Ihren Download auf der Seite finden (wenn sie sich ändert)
  3. Laden Sie die Datei von dieser URL zu einer lokalen Datei

In Python würde dies wie folgt aussehen:

import urllib,re 

f = urllib.urlopen('http://yoursitehere') # Original page where the download button is 
html = f.read() 
f.close() 

m = re.search('/[\'"](.*\.xls)["\']/', html, re.S) # Find file ending .xls in page 
if m: 
    urllib.urlretrieve(m.group(1), 'local_filename.xls') # Retrieve the Excel file 
0

Es ist besser, Selen Python b verwenden odings:

from selenium import webdriver 
from selenium.webdriver.common import alert 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.common.exceptions import TimeoutException 
class AlertsManager: 
    def alertsManager(self,url): 
     self.url_to_visit=url 
     self.driver=webdriver.Ie() 
     self.driver.get(self.url_to_visit) 
     try: 
      while WebDriverWait(self.driver,1).until(EC.alert_is_present()): 
       self.alert=self.driver.switch_to_alert() 
       self.driver.switch_to_alert().accept() 
     except TimeoutException: 
      pass 


if __name__=='__main__': 
    AM=AlertsManager() 
    url="http://htmlite.com/JS006.php" # This website has 2 popups 
    AM.alertsManager(url) 
Verwandte Themen