如何用python控制网页对话框

时间:2009-08-04 04:03:09

标签: python dialog webpage

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

萨莎

澄清我的问题:

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

但是,假设您想要做的只是从网站下载此数据,为什么要使用GUI? Python提供了从互联网上下载文件而无需控制IE所需的一切。您要遵循的流程是:

  1. 下载主页
  2. 在页面中找到您下载的网址(如果有更改)
  3. 将该网址中的文件下载到本地文件
  4. 在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
    

答案 2 :(得分: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)