2013-09-28 73 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() 

似乎並沒有給我我想要的東西。我知道在使用螢火蟲的頁面上,javascript函數 document.exporta.submit() 生成.xls文件,但我不知道如何使用python保存它。我幾乎到處搜查都無濟於事。非常感謝!

+0

upvoted for what what究竟是什麼? –

回答

-1

此URL將您通過Javascript提交的表單重定向到第二頁。您需要分析第二個表單的內容並提取其參數,以便使用參數自動化下載。提取上面的網址對此無濟於事。 像'機械化'這樣的工具可以幫助您自動提取文件。

這是要提交的表單:

<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查詢。