0

当我尝试使用 Python 从某个网页自动下载文件时,我得到网页对话框窗口(我使用 IE)。该窗口有两个按钮,例如“继续”和“取消”。我不知道如何单击继续按钮。问题是我不知道如何用 Python 控制网页对话框。我尝试使用 winGuiAuto 查找窗口的控件,但它无法识别任何 Button 类型的控件...一个想法?

萨沙

澄清我的问题:

我的目的是从某个网站下载股票数据。我需要为许多股票执行此操作,因此我需要 python 以重复的方式为我执行此操作。这个特定站点通过单击链接让我将数据下载到 Excel 文件中来导出数据。但是,单击该链接后,我得到一个网页对话框,询问我是否确定要下载此文件。这个网页对话框是我的问题——它不是一个 html 页面,也不是一个常规的 windows 对话框。这是另外一回事,我无法配置如何用 python 控制它。它有两个按钮,我需要单击其中一个(即继续)。它似乎是在 IE 中实现的一种特殊窗口。它的特点是它的标题如下所示:网页对话框--下载 blalblabla。如果我手动单击“继续”,它会打开一个常规的 Windows 对话框(打开、保存、取消),我知道如何处理 winGuiAuto 库。尝试将此库用于网页对话框窗口,但没有成功。尝试使用 Autoit Info 工具识别按钮 - 也没有运气。事实上,也许这些不是按钮,而是链接,但是我看不到链接,也没有可见的源代码......我需要有人告诉我这个网页对话框是什么以及如何控制它Python。那是我的问题。我需要有人告诉我这个网页对话框是什么以及如何用 Python 控制它。那是我的问题。我需要有人告诉我这个网页对话框是什么以及如何用 Python 控制它。那是我的问题。

4

3 回答 3

0

你不能,你也不想。当您提出问题时,请尝试解释您想要实现的目标,而不仅仅是您面前的任务。你很可能会走错路。还有其他一些方法可以做你想做的事情。

于 2009-08-04T07:15:07.977 回答
0

标题“网页对话框”表明这是一个 Javascript 生成的输入框,因此您无法通过 winGuiAuto 访问它。你直接问的不太可能。

但是,假设您想要做的只是从站点下载这些数据,那么您为什么要使用 GUI?Python 提供了从 Internet 下载文件所需的一切,而无需控制 IE。您将要遵循的过程是:

  1. 下载主机页面
  2. 在页面中找到您下载的 url(如果它发生变化)
  3. 将文件从该 url 下载到本地文件

在 Python 中,这看起来像这样:

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
于 2013-04-13T13:24:39.570 回答
0

最好使用 selenium Python 绑定:

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)
于 2014-08-29T06:02:51.910 回答