[python] python http

Szkandera.Karel Szkandera.Karel na seznam.cz
Neděle Únor 7 15:00:16 CET 2010


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()


Další informace o konferenci Python