Mozna bych se netrapil s httplib a pouzil requests ( http://docs.python-requests.org/en/latest/) - odpadne ti spusta skadleni (enkodovani, par hlavicek, apod). Co se tyce jednoduchyho posilani formu, driv sem docela loviskoval mechanize (https://pypi.python.org/pypi/mechanize/). Jendoduchej priklad, jak primo zneuzit form ze stranky treba tady https://gist.github.com/starenka/750404 Vyhoda je takova, ze si to najde form a posle to se vsim vsudy, takze nemusis resit skryty inputy, csrf tokeny apod. I kdyz mi teda mnohem pohodlnejsi prijde si proste zjistit, co mas poslat (proste si to rucne vypln v browseru a pak se ve firebugu - nebo podobnym nastroji - podivej, co za post a hlavicky browser poslal) a zreplikuj to pomoci requests.
1. ano action ve <form> je kam se posila formular. je zadany bud relativne ke strance kde si nebo celou adresou, podle toho se zarid. ty samozrejme potrebujes celou adresu 2. jo name=value ps. nevim jesli uplne rozumim tem dotazum, tak me kdyztak nekamenuj ;) s. --- In Perl you shoot yourself in the foot, but nobody can understand how you did it. Six months later, neither can you. | print 'aknerats'[::-1] 2013/4/3 Roman Beno <romanbeno...@gmail.com> > Dobrý deň, > > mal by som jednu otázku, a to ako konrétne poslať "správne dáta" z > určitého formulára na server za pomoci httplib2. > > Môj postup bol takýto: > > > ================================================== > import httplib2 > from urllib.parse import urlencode > > inst = httplib2.Http(cache = ".cache", timeout = 5.0) > # inst.add_credentials("meno", "heslo", "doména") , ak ide o fórum > data = {"parameter" : "data") > resp, cont = inst.request("URL", method = "POST", headers = > {"Content-Type" : "application/x-www-form-urlencoded; charset = > \"utf-8\""}, body = urlencode(data)) > ======================================================= > > Server vo väčšine prípadov vráti kód 200, ale kedže neviem či to funguje > korektne (*1), > mal by som k tomu niekoľko otázok: > > 1) samotný formulár, prostredníctvom ktorého chcem poslať dáta. Je v > poriadku že namiesto argumentu "URL" v metode Http.request uvádzam > parameter formuláru "action" (v source formuláru) ? > > 2) premenná data; existuje nejaká overená metóda, podľa ktorej dávať mená > kľúčov v posielanom slovník, ktorý sa neskôr vhodí do urlencode() ? Ja tam > zvyknem dávať atribút name konkrétnej značky input vo formulári, z ktorého > chcem odoslať dáta. > > _____________________________________________________ > > * 1 = Korektne, tým myslím výsledok rovnaký tomu, ako keby som ten > formulár vyplnil ručne a klikol na submit. Trebárs postol nejaký príspevok > na programujte.com fore (len príklad). Mne to pri vyššie zmienovanom > riešení (kóde) potrebný výsledok nedosahuje > > _____________________________________________________ > > Neviem, či body 1 a 2 sú koreňmi problému, ale bol by som vďačný za > akékoľvek funkčné riešenie (nemusí ísť o riešenie v httplib2, kľudne môže > byť aj v urllib). > > Ďakujem za prípadné odpovede > > > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python