2009-08-04 5 views
0

파이썬을 사용하여 일부 웹 페이지에서 파일을 자동으로 다운로드하려고하면 IE를 사용하는 웹 페이지 대화 상자가 나타납니다. 창에는 '계속'및 '취소'와 같은 두 개의 버튼이 있습니다. 계속 버튼을 클릭하는 방법을 알 수 없습니다. 문제는 입니다. 파이썬으로 웹 페이지 대화 상자를 제어하는 ​​방법을 모르겠습니다. 나는 윈도우의 컨트롤을 찾기 위해 winGuiAuto를 사용해 보았지만 어떤 버튼 타입도 인식하지 못했습니다. 컨트롤 ... 아이디어?파이썬으로 웹 페이지 대화 상자를 제어하는 ​​방법

사샤

내 질문의 설명 :

내 목적은 특정 웹 사이트에서 주식 데이터를 다운로드하는 것입니다. 나는 많은 주식을 위해 그것을 수행 할 필요가있다. 그래서 나는 반복적 인 방식으로 나를 위해 그것을하기 위해 파이썬이 필요하다. 이 특정 사이트는 링크를 클릭하여 Excel 파일로 데이터를 다운로드하도록 데이터를 내 보냅니다. 그러나 링크를 클릭하면 웹 페이지 대화 상자가 나타나서이 파일을 다운로드 할 것인지 묻습니다. 이 웹 페이지 대화 상자는 제 문제입니다. html 페이지가 아니며 일반 Windows 대화 상자가 아닙니다. 그것은 다른 것으로 파이썬으로 제어하는 ​​방법을 설정할 수는 없습니다. 두 개의 버튼이있어서 그 중 하나를 클릭해야합니다 (예 : 계속). 그것은 IE에서 구현 된 특별한 종류의 윈도우 인 것 같습니다. 제목과 같이 구별됩니다 : 웹 페이지 대화 상자 - 다운로드 blalblabla. 계속해서 수동으로 클릭하면 winGuiAuto 라이브러리로 처리하는 방법을 알고있는 일반 Windows 대화 상자 (열기, 저장, 취소)가 열립니다. 운이없는 웹 페이지 대화 상자 창에서이 라이브러리를 사용하려고했습니다. Autoit Info 도구로 버튼을 인식하려고했는데 행운이 없다. 사실, 단추는 아니지만 실제로 링크입니다. 그러나 링크가 보이지 않고 소스 코드가 보이지 않습니다 ... 필요한 것은이 웹 페이지 대화 상자의 의미와 함께 제어하는 ​​방법입니다. 파이썬. 그것은 내 질문이었다.

+0

나는 당신이 무엇을 묻고 있는지 이해할 수 없다 ... 코드 샘플을 사용하여 무엇을 하려는지 정확하게 설명해 주실 수 있습니까? –

+2

파이썬을 언급 했으므로 코드를 사용하고 있습니까? 그걸 게시 할 수 있니? –

+0

python 스크립트로 파일을 다운로드하려고합니까?그렇다면 브라우저에서 페이지를 열고 '계속'버튼을 클릭하면 어떤 일이 일어나는지 볼 수 있습니다. 그럼 파일 가져 오는거야? 어쩌면 다른 접근법을 시도해보고 파이썬이 최종 URL을 알아내는 동안 다운로드 작업을하도록 할 수있을 것입니다. – kender

답변

0

할 수 없으며 원하지 않습니다. 질문을 할 때, 직전에해야 할 일이 아니라 성취하려는 것을 설명하십시오. 당신은 잘못된 길을 짖고있을 가능성이 있습니다. 당신이하려는 일을하는 다른 방법이 있습니다.

0

'웹 페이지 대화'라는 제목은 자바 스크립트에서 생성 된 입력 상자이므로, 왜 winGuiAuto를 통해 액세스 할 수 없는지를 나타냅니다. 당신이 직접 묻는 것은 가능하지 않을 것입니다.

그러나 사이트에서이 데이터를 다운로드하는 것으로 가정하고 GUI를 사용하는 이유는 무엇입니까? Python은 IE를 제어하지 않고 인터넷에서 파일을 다운로드하는 데 필요한 모든 것을 제공합니다. 당신이 따라야 할 것입니다 프로세스는 다음과 같습니다

  1. 다운로드 호스트 페이지
  2. 는 로컬 파일
  3. 에 해당 URL에서 파일을 다운로드 (가 변경되는 경우) 페이지에서 다운로드 할 URL을 찾기
이 이런 식으로 뭔가를 파이썬에서

보일 것이다 :

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

셀레늄 파이썬 B를 사용하는 것이 좋습니다 indings :

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)