[python] formuláre a httplib2
starenka .
starenka0 na gmail.com
Středa Duben 3 22:33:59 CEST 2013
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 <romanbeno273 at 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 at py.cz
> http://www.py.cz/mailman/listinfo/python
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.py.cz/pipermail/python/attachments/20130403/a7936da2/attachment.html>
Další informace o konferenci Python