[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