2012-10-07 2 views
1
import twill 
twill.commands.agent("Mozilla/5.0 (Windows NT 6.2; WOW64; rv:15.0) Gecko/20120910144328 Firefox/15.0.2") 
twill.commands.go('loginpage...') 

twill.commands.fv("1", "txtUserName", "username") 
twill.commands.fv("1", "txtPassword", "password") 

# Login Page 
twill.commands.submit() 

# Pre Registration Report Selection 
twill.commands.submit() 

# Generate and download the report. 
twill.commands.go("ReportGenerator.ashx") 

print "Done!" 

twill.commands.redirect_output('PreRegistration.xls') 
#twill.commands.save_html('PreRegistration.xls') 

그게 현재 사용하려고하는 것입니다.Python 2.7 능 직물을 사용하여 다운로드 한 파일을 올바르게 저장하십시오.

웹 사이트는 다음과 같은 작동합니다

  1. 로그인 페이지 나 보고서 생성을 선택할 수 있습니다 다른 형태로 재 지정합니다.
  2. 모든 기본 선택 항목을 원하므로 페이지를 다시 제출하십시오.
  3. 그런 다음 보고서를 생성하는 다른 페이지를 방문한 다음 강제로 파일을 다운로드하십시오.

redirect_output은 xls 파일을 저장하지 않습니다.

save_html은 정보를 저장하지만 무언가를 손상시키고 Excel에서 전혀 읽을 수 없습니다. 나는 차이점을 체크 아웃하기 위해 kdiff를 사용하는데, 많은 부분이 있지만 왼쪽/오른쪽의 데이터는 동일하고 라인 엔딩 등의 문제인지 궁금합니다. 100 % 확신 할 수 없습니다.

능동의 웹 사이트에서 명령 페이지를 확인했지만이 문제를 해결하는 방법을 잘 모르겠습니다.

답변

2

줄무늬가있는 것으로 의심됩니다. 능직의 save_html 함수를 수정하여 'w'대신 'wb'로 작성하면 모두 잘됩니다.

+0

'twill' 쿠키 jar를 사용하여'requests'로 바이너리 컨텐츠를 얻는 다른 방법 : http://stackoverflow.com/questions/37910736/python-twill-download-file-accessible-through-php-script/37911758#37911758 –