0

Python を使用して Web ページからファイルを自動的にダウンロードしようとすると、Web ページ ダイアログ ウィンドウが表示されます (私は IE を使用しています)。ウィンドウには、「続行」と「キャンセル」などの 2 つのボタンがあります。[続行] ボタンをクリックする方法がわかりません。問題は、Webpage Dialog を Python で制御する方法がわからないことです。winGuiAuto を使用してウィンドウのコントロールを見つけようとしましたが、Button タイプのコントロールを認識できませんでした...アイデアはありますか?

サーシャ

私の質問の明確化:

私の目的は、ある Web サイトから株式データをダウンロードすることです。私は多くの株に対してそれを実行する必要があるので、繰り返し行うにはpythonが必要です。この特定のサイトは、リンクをクリックして Excel ファイルでダウンロードできるようにすることで、データをエクスポートします。しかし、リンクをクリックすると、このファイルをダウンロードするかどうかを確認する Web ページ ダイアログ ボックスが表示されます。この Web ページ ダイアログは私の問題です。これは html ページではなく、通常の Windows ダイアログ ボックスでもありません。それは別のものであり、Pythonで制御する方法を構成できません。2 つのボタンがあり、そのうちの 1 つ (続行) をクリックする必要があります。IE に実装されている特別な種類のウィンドウのようです。次のようなタイトルで区別されます。 Web ページ ダイアログ -- bralblabla をダウンロードします。[続行] を手動でクリックすると、通常の Windows ダイアログ ボックス (開く、保存、cancel) winGuiAuto ライブラリで処理する方法を知っています。このライブラリをWebページダイアログウィンドウに使用しようとしましたが、うまくいきませんでした。Autoit Infoツールでボタンを認識しようとしましたが、うまくいきませんでした。実際、これらはボタンではなく、実際にはリンクである可能性がありますが、リンクが表示されず、ソース コードも表示されません... この Web ページのダイアログ ボックスとは何か、およびそれを制御する方法を教えてくれる人が必要ですパイソン。それが私の質問でした。私が必要としているのは、この Web ページのダイアログ ボックスが何であるか、Python でそれを制御する方法を教えてくれる人です。それが私の質問でした。私が必要としているのは、この Web ページのダイアログ ボックスが何であるか、Python でそれを制御する方法を教えてくれる人です。それが私の質問でした。

4

3 に答える 3

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 に答える
0

できませんし、したくありません。質問をするときは、目の前のタスクだけでなく、何を達成しようとしているのかを説明してみてください。あなたは間違った道を進んでいる可能性があります。あなたがやろうとしていることをする他の方法があります。

于 2009-08-04T07:15:07.977 に答える
0

「Webpage Dialog」というタイトルは、これが Javascript で生成された入力ボックスであることを示唆しているため、winGuiAuto 経由でアクセスできないのはなぜですか。あなたが直接求めていることは、ほとんど不可能です。

しかし、あなたがやりたいことはサイトからこのデータをダウンロードすることだけだと仮定して、なぜ GUI を使用しているのですか? Python は、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 に答える