[Python-es] Request a Pagina
Manuel A. Estevez Fernandez
stvzito en gmail.com
Lun Mar 11 19:12:31 CET 2013
Hola buen día
En la compañía donde recién comencé a laborar tienen una "rutina" que
realiza una persona todos los días, la cual es entrar a la página de la
autoridad y verificar la situación de los pedimentos del día anterior.
Labor que me parece un tanto monótona y que puede ser automatizada, para
ello me conseguí la librería requests, par ahacer las consultas y
BeautifulSoup para el parseo del HTML.
Quedando de está manera el código de prueba:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import requests
from BeautifulSoup import BeautifulSoup
consulta_ = requests.get('
http://www.aduanas.gob.mx/soianet/oia_consultarap_cep.aspx')
def cookie_2_str(cookie):
cadena_ = ''
for key_ in cookie.keys():
cadena_ =';%s=%s'%(key_,cookie[key_])
return cadena_[1:]
if consulta_.status_code == 200 :
session_id_ = consulta_.cookies['ASP.NET_SessionId']
html_ = BeautifulSoup(consulta_.text)
pedimento_consulta_ = dict(cmbAduanas=430
, txtPatente=3931
, txtDocumento=8000407
, cmdBuscar='Buscar'
, rblPatente='blPatente'
, cmbAnios=2008
, __VIEWSTATE='%s'.encode('utf8')%html_.find(attrs={"name":
"__VIEWSTATE"})['value']
,txtVIN=''
)
encabezado_ =
{'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
,'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
,'Accept-Encoding':'gzip,deflate,sdch'
,'Accept-Language':'es-ES,es;q=0.8'
,'Cache-Control':'max-age=0'
,'Connection':'keep-alive'
,'Content-Length':4413
,'Content-Type':'application/x-www-form-urlencoded'
,'Cookie': cookie_2_str(consulta_.cookies)
,'Host':'www.aduanas.gob.mx'
,'Origin':'http://www.aduanas.gob.mx'
,'Referer':'http://www.aduanas.gob.mx/soianet/oia_consultarap_cep.aspx'
,'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like
Gecko) Chrome/25.0.1364.152 Safari/537.22'}
print pedimento_consulta_
consulta_2_ = requests.post('
http://www.aduanas.gob.mx/soianet/oia_consultarap_cep.aspx', data =
pedimento_consulta_ , headers = encabezado_)
if consulta_2_.status_code == 200:
html_2_ = BeautifulSoup(consulta_2_.text)
print html_2_.findAll(id='grdPedimentos')
print consulta_2_.text
El primer request lo hago para obtener la clave de __VIEWSTATE que se
genera cuando se visita la página la primera vez, después con esta clave
envío los datos para la búsqueda, sin embargo en el 2 request no me aparece
el grid donde vienen los resultados de la búsqueda, (lo saqué desde la
herramienta para desarrolladores de chrome)
<TD><table cellspacing="0" cellpadding="3" rules="rows" bordercolor=
"#E7E7FF" border="1" id="grdPedimentos" bgcolor="White" width="100%">
<tr align="Center" bgcolor="#6699CC">
<td nowrap="nowrap" width="30"><font face="Arial Narrow" color="#F7F7F7"
size="1"><b>DOCUMENTO</b></font></td><td><font face="Arial Narrow" color=
"#F7F7F7" size="1"><b><a href="
javascript:__doPostBack('grdPedimentos$_ctl1$_ctl0','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="#F7F7F7">PATENTE</font></a></b></font></td><td><font face="Arial
Narrow" color="#F7F7F7" size="1"><b><a href="
javascript:__doPostBack('grdPedimentos$_ctl1$_ctl1','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="#F7F7F7">ESTADO</font></a></b></font></td><td><font face="Arial
Narrow" color="#F7F7F7" size="1"><b><a href="
javascript:__doPostBack('grdPedimentos$_ctl1$_ctl2','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="#F7F7F7">FECHA</font></a></b></font></td><td><font face="Arial
Narrow" color="#F7F7F7" size="1"><b><a href="
javascript:__doPostBack('grdPedimentos$_ctl1$_ctl3','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="#F7F7F7">BANCO</font></a></b></font></td><td><font face="Arial
Narrow" color="#F7F7F7" size="1"><b><a href="
javascript:__doPostBack('grdPedimentos$_ctl1$_ctl4','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="#F7F7F7">SECUENCIA</font></a></b></font></td><td><font
face="Arial Narrow" color="#F7F7F7" size="1"><b><a
href="javascript:__doPostBack('grdPedimentos$_ctl1$_ctl5','')"><font
color="#F7F7F7">NUMERO DE OPERACION</font></a></b></font></td><td><font
face="Arial Narrow" color="#F7F7F7" size="1"><b><a
href="javascript:__doPostBack('grdPedimentos$_ctl1$_ctl6','')"><font
color="#F7F7F7">FACTURA</font></a></b></font></td>
</tr><tr align="Center" bgcolor="White">
<td align="Center" bgcolor="LightSteelBlue"><font face="Arial" color=
"MediumBlue" size="2"><a href="
javascript:__doPostBack('grdPedimentos$_ctl2$_ctl0','')<chrome-devtools://devtools/devtools.html?dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)>
"><font color="MediumBlue">8000407</font></a></font></td><td><font face=
"Arial" color="threeddarkshadow" size="2">3931</font></td><td align="Left"><
font face="Arial" color="threeddarkshadow" size="2">CUMPLIDO</font></td><td>
<font face="Arial" color="threeddarkshadow" size="2">26/09/2008 15:21:55</
font></td><td><font face="Arial" color="threeddarkshadow" size="2"> </
font></td><td><font face="Arial" color="threeddarkshadow" size="2">0</font>
</td><td><font face="Arial" color="threeddarkshadow" size="2"> </font>
</td><td><font face="Arial" color="threeddarkshadow" size="2"> </font>
</td>
</tr>
</table><span id="lblEtRegistrosS"><font face="Arial" color="RoyalBlue" size
="2"> TOTAL DE REGISTROS: 1</font></span></TD>
¿Alguién tiene alguna idea del por qué no se carga desde la consulta de mi
código?
Agradezco de antemano sus comentarios.
Saludos.
by:
ISC. Manuel Alejandro Estévez Fernández
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130311/f3a159a7/attachment.html>
Más información sobre la lista de distribución Python-es