[python] http form

Petr Hlávka petrhlavka na gmail.com
Úterý Únor 9 15:39:23 CET 2010


Dobry den,

myslim, ze spatne je napr. radek

y = len('id="__EVENTVALIDATION" value="')

__EVENTVALIDATION string se vam nenacita spravne (nicmene bude toho
asi vic, nejjednodussi bude odposlechnout, co presne posila prohlizec
a pak to zkusit nasimulovat v pythonu, myslim ze do postu davate
podstatne nim parametru a server vam pak neposle vysledek).

  S pozdravem Petr Hlavka.

2010/2/9 Szkandera.Karel <Szkandera.Karel na seznam.cz>:
> Myslím si že to v pořádku mám a zobrazovat jsem si to taky zkoušel, nicméně kontrolní printy jsem z kódu vymazal :) Kdybych si to stokrát nezkontroloval a nezkoušel najít chybu sám, nepsal bych to sem. Máte nějakou radu?
>
> K.
>
>> Message: 19
>> Date: Tue, 9 Feb 2010 06:02:00 +0100
>> From: "Jaroslav Lukesh" <lukesh na seznam.cz>
>> To: "Konference PyCZ" <python na py.cz>
>> Subject: Re: [python] python http
>> Message-ID: <1b5f01caa945$045ad660$6164a8c0 na xp>
>> Content-Type: text/plain; format=flowed; charset="iso-8859-2";
>>       reply-type=original
>>
>> No a máte ty data a hlavičku skutečně vpořádku? Což takhle si to pro
>> kontrolu zobrazit?
>>
>> ----- Original Message -----
>> From: "Szkandera.Karel" <Szkandera.Karel na seznam.cz>
>>
>>
>> Děkuji za odpověď, bohužel s tímto content-typem jsem to taky zkoušel, ale
>> nefunguje to. Při tomto zadání mi to vrátí chybovou stránku serveru " v
>> aplikaci nastali neočekávaná chyba [callback/viewstate/mac]. Tento typ chyby
>> vzniká, pokud nesouhlasí kontrolní mechanizmy aplikace zajišťující
>> konzistenci odeslaných a přijatých interních aplikačních dat na klienta a
>> zpět (odeslaná data nesouhlasí s daty přijatými). "
>>
>>
>> > Message: 2
>> > Date: Sun, 07 Feb 2010 16:24:24 +0100
>> > From: "azurIt" <azurit na pobox.sk>
>> >
>> > len co som to zbezne pozrel, tak pri POST musi byt hlavicka Content-Type
>> > nastavena na application/x-www-form-urlencoded
>> >
>> > azur
>> >
>> >
>> > >-----Pôvodná správa-----
>> > >Od: Szkandera.Karel [mailto:Szkandera.Karel na seznam.cz]
>> > >Komu: python na py.cz
>> > >Predmet: [python] python http
>> > >
>> > >
>> > >Ahoj,
>> > >
>> > >chci posilat pomoci pythonu automaticky data do jednoho formulare na webu
>> > >a
>> > nasledne odpoved zpracovat. Ikdyz bych rekl, ze by to melo jit, tak mi to
>> > nevraci kyzeny vysledek. Chtel jsem, aby mi nasledujici skript vratil
>> > stranku s
>> > vyplnenym katastralnim uzemim a kam bych mohl nasledne zadat vyplnit
>> > parcelni
>> > cislo, ale vypada to, jakoby se ten POST nepovedl. Nevite v cem je chyba?
>> > Dekuji
>> > >
>> > >
>> > >import httplib, urllib, urllib2, cookielib
>> > >
>> > >#definice pouzivanych promennych
>> > >adresa = 'http://m.nahlizenidokn.cuzk.cz/VyberParcelu.aspx'
>> > >cesta_k_vysledku='d:/python/cuzk/vysledek.html'
>> > >cislouzemi = '635561'
>> > >parcela = '1350'
>> > >headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
>> > rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2','Content-type':
>> > 'application/xhtml+xml'}
>> > >text = ''
>> > >
>> > >
>> > >#poslani metodou get + ziskani vildacniho kodu
>> > >conn = httplib.HTTPConnection("m.nahlizenidokn.cuzk.cz")
>> > >odpoved = conn.request("GET", "/VyberParcelu.aspx", headers=headers)
>> > >r1 = conn.getresponse()
>> > >odpoved = r1.read()
>> > >
>> > >
>> > >x = odpoved.find('__VIEWSTATE" value="')
>> > >y = len('__VIEWSTATE" value="')
>> > >z = odpoved.find('" />',x+y)
>> > >state = odpoved[x+y:z]
>> > >
>> > >x = odpoved.find('__EVENTVALIDATION" value="')
>> > >y = len('id="__EVENTVALIDATION" value="')
>> > >z = odpoved.find('" />',x+y)
>> > >valid = odpoved[x+y:z]
>> > >
>> > >
>> > >#poslani metodou POST
>> > >params = urllib.urlencode({'__VIEWSTATE' : state, '__EVENTVALIDATION' :
>> > >valid
>> > ,'ctl00$bodyPlaceHolder$vyberKU$btnKU' : 'Vyhledat' ,
>> > 'ctl00$bodyPlaceHolder$vyberKU$txtKU' : cislouzemi})
>> > >headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
>> > rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2', 'Content-type':
>> > 'application/xhtml+xml'}
>> > >
>> > >conn.request("POST", "/VyberParcelu.aspx", params, headers)
>> > >response = conn.getresponse()
>> > >print response.status, response.reason
>> > >
>> > >#kontrolni vytisknuti odpovedi do souboru
>> > >data = response.read()
>> > >text=text + str(data)
>> > >
>> > >pridat = file(cesta_k_vysledku,'w')
>> > >pridat.write(text)
>> > >pridat.close()
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>


Další informace o konferenci Python