2013-09-28 5 views
1

POST 요청을 통해 이와 같은 페이지에서 .xls 파일을 다운로드하려고하는데 urllib2, 요청 등을 사용해 보았습니다. 그러나 파일에 javascript 함수를 통해 액세스한다고 생각합니다. .python 다운로드 xls javascript

내 코드는 다음과 같습니다

import urllib2 

url= 'http://www.inegi.org.mx/est/contenidos/espanol/proyectos/censos/ce2009/saic/exportar.asp?Cuadro=INEGI.+Censos+Econ%C3%B3micos+2009.+Resultados+definitivos&Censo=2009&Nacional=&vcampo=H001A&Sector=23&c=17166&Genera=1&formato=Hoja+de+C%C3%A1lculo+Excel%28.xls%29&Modelo=SCIAN&Grupo=AA&Municipio=01001' 
obj = urllib2.urlopen(url) 
file = '/home/j/Dropbox/School/RA/download.xls' 
output = open(file, 'wb') 
output.write(obj.read()) 
output.close() 

내가 원하는 걸 포기하지 않는 것 같습니다. firebug를 사용하는 페이지에서 javacript 함수 document.exporta.submit() 은 .xls 파일을 생성하지만 파이썬을 사용하여 저장하는 방법을 알지 못합니다. 나는 아무 데나 쓸모없는 곳을 수색했다. 정말 고마워!

+0

정확히 무엇을 위해 upvoted? –

답변

-1

이 URL은 자바 스크립트를 통해 제출 된 양식이있는 두 번째 페이지로 리디렉션합니다. 두 번째 양식의 내용을 분석하고 매개 변수를 추출하여 매개 변수를 사용하여 다운로드를 자동화해야합니다. 위의 URL을 가져 오는 것은 도움이되지 않습니다. 'mechanize'와 같은 도구는 파일 가져 오기를 자동화하는 데 도움이 될 수 있습니다.

양식을 제출하여야한다 :

<form name="exporta" method="post" action="/lib/exporta/exporta.aspx" target="_self"> 

<input type="hidden" name="to_display" value="entidad,municipio,codigo,H001A "> 
<input type="hidden" name="Lc_encabeza" value=" Entidad federativa\Municipios\Codigo\PERSONAL OCUPADO TOTAL\ "> 
<input type="hidden" name="lc_formato" value="Hoja de Cálculo Excel(.xls)"> 

    <input type="hidden" name="lc_piepagina" value="Nota: CONFIDENCIALIDAD DE LOS DATOS PROPORCIONADOS CON FINES ESTAD?STICOS LA COLUMNA UNIDADES ECON?MICAS SE ENCUENTRA INHIBIDA EN VARIOS RENGLONES, MOSTRANDO UN ASTERISCO (*). ESTO SE DEBE A QUE LA LEY DEL SISTEMA NACIONAL DE INFORMACION ESTAD?STICA Y GEOGR?FICA, EN VIGOR, EN SUS ART?CULOS 37, 38, 42 Y 47 ESTABLECE LA CONFIDENCIALIDAD DE LA INFORMACI?N. EL ART?CULO 37 SE?ALA QUE: ''LOS DATOS QUE PROPORCIONEN PARA FINES ESTAD?STICOS LOS INFORMANTES DEL SISTEMA A LAS UNIDADES EN T?RMINOS DE LA PRESENTE LEY, SER?N ESTRICTAMENTE CONFIDENCIALES Y BAJO NINGUNA CIRCUNSTANCIA PODR?N UTILIZARSE PARA OTRO FIN QUE NO SEA EL ESTAD?STICO..''; MIENTRAS QUE EL ART?CULO 38 CITA TEXTUALMENTE: '' LOS DATOS E INFORMES QUE LOS INFORMANTES DEL SISTEMA PROPORCIONEN PARA FINES ESTAD?STICOS Y QUE PROVENGAN DE REGISTROS ADMINISTRATIVOS, SER?N MANEJADOS OBSERVANDO LOS PRINCIPIOS DE CONFIDENCIALIDAD Y RESERVA, POR LO QUE NO PODR?N DIVULGARSE EN NING?N CASO EN FORMA NOMINATIVA O INDIVIDUALIZADA, NI HAR?N PRUEBA ANTE AUTORIDAD JUDICAL O ADMINISTRATIVA, INCLUYENDO LA FISCAL, EN JUICIO O FUERA DE ?L..''. EL ART?CULO 42 HACE REFERENCIA A LA POSIBILIDAD DE DENUNCIAR LA VIOLACI?N A LOS YA MENCIONADOS PRINCIPIOS DE CONFIDENCIALIDAD Y RESERVA; MIENTRAS QUE EL ART?CULO 47 DICTA QUE: '' LA INFORMACI?N NO QUEDA SUJETA A LA LEY FEDERAL DE TRANSPARENCIA Y ACCESO A LA INFORMACI?N P?BLICA GUBERNAMENTAL..''.\Fuente: INEGI - Censos Econ&oacute;micos 2009. Resultados definitivos\"> 
    <input type="hidden" name="lc_piecuadro" value="Fuente: INEGI. Censos Econ&oacute;micos 2009. Resultados definitivos" > 

<input type="hidden" name="Lc_sql" value="Select a.entidad + ' ' + b.descrip as entidad,a.municipio + ' ' + c.descrip as municipio,a.codigo + ' ' + d.descrip as codigo, H001A from (Select entidad,municipio,codigo,clave,H001A from saic.saic_2009_23 where ((entidad=01) AND (municipio=001 ) AND (codigo=23)) AND (substring(clave,1,2)= 'NG' OR len(clave)=0) ) a, saic.entidad_2009 b, saic.municipios_2009 c , saic.renrp d where a.entidad = b.codigo and (a.entidad =substring(c.codigo,1,2) and a.municipio = substring(c.codigo,3,3)) and (a.codigo = d.codigo and d.clasif = 'B') order by a.entidad, a.municipio,a.codigo" > 
<input type="hidden" name="Lc_conexion" value="Provider=sqloledb;Data Source=INTERNET\BD02;Initial catalog=SAIC;User id=internet.consulta;Pwd=ProdBD8;" > 
<input type="hidden" name="lc_titulo" value="INEGI. CENSOS ECONóMICOS 2009. RESULTADOS DEFINITIVOS" > 


</form> 

아, 그것은 SQL 쿼리를 큰 포함되어 있습니다.

관련 문제