On 13 čvn, 09:37, petrofF <[email protected]> wrote: > .... > PROBLÉM = odeslání zprávy: > A. Načtení stránky s formulářem: > >>> import httplib2 > >>> h = httplib2.Http('.cache'); response, content = > >>> h.request("http://www.vodafonesms.cz/",headers={'cache-control':'no-cache'}) > .... > Jak ze zdrojového textu ( = content ) získat seznam parametrů + hodnot > formuláře ? (ve standardní knihovně jsem vhodný modul nenašel) > > B. Odeslání POST requestu s daty > Zde si nejsem jistý, který header Set-Cookie použít (jsou dva) > > Díky předem za jakékoli vodítko > ---------------------------------------------- [ZAPOMNĚL JSEM UPŘESNIT VERZI PYTHONU = 2.5] (A)
> Jinak na parsování HTML existuje např. BeautifulSoup > http://www.py.cz/BeautifulSoup Je to vynikající a přesně to, co potřebuju: import BeautifulSoup, urllib, httplib2 def getPOSTdata(content, inpDICT={}, formName='smsform'): soup=BeautifulSoup.BeautifulSoup(content) formTag = soup('form',{'name':formName})[0] tags = formTag.findAll(["textarea","input"]) actualDICT = {} getAttr=lambda tag,aName: str(dict(tag.attrs).get(aName,">>> Value CHYBI <<<")) for tag in tags: pair={getAttr(tag,"name"):getAttr(tag,"value")} actualDICT.update(pair) if not inpDICT: print pair assert inpDICT, "<Listing: FORM-Params>" actualDICT.update(inpDICT) params = urllib.urlencode(actualDICT) return str(formTag["action"]),params >>> ..... >>> h = httplib2.Http('.cache') >>> response, content = h.request(url,headers={'cache-control':'no-cache'}) >>> getPOSTdata(content) {'imgid': 'de0ce7a9acfa910f0641685dd2a51a73'} {'ppp': '127641611832110:9f8d25f503cd7281478229755d48217c'} {'locale': 'cz'} {'number': ''} {'mynumber': ''} {'sender': ''} {'message': '>>> Value CHYBI <<<'} {'char_in': ''} {'char_le': ''} {'parts': ''} {'pictogram': '>>> Value CHYBI <<<'} {'send': 'Odeslat!'} AssertionError: <Listing: FORM-Params> >>> inp = getInpDICT("12121212") >>> inp {'sender': 'Petr Fojtik', 'pictogram': '12121212', 'char_in': '14', 'char_le': '734', 'number': '773695124', 'parts': '1', 'mynumber': '596874494', 'message': 'Poslana zprava'} >>> data = getPOSTdata(content,inp) >>> data ('send.php', 'sender=Petr +Fojtik&pictogram=12121212&locale=cz&char_in=14&char_le=734&send=Odeslat %21&number=773695124&parts=1&imgid=de0ce7a9acfa910f0641685dd2a51a73&ppp=127641611832110%3A9f8d25f503cd7281478229755d48217c&message=Poslana +zprava&mynumber=596874494') ....mělo by následovat: >>> url += data[0] >>> response, content = h.request(url, 'POST', headers=headers, data[1]) A zde si nejsem jist přesným obsahem headers (hlavně co se týče COOKIES), Zkusil jsem (ve FIREFOXU/Firebug) odchytit komunikaci z orig.webu Tam ty headers při POSTnutí formu vypadají takto: REQUEST HEADERS Host: www.vodafonesms.cz User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.0.15) Gecko/2009101601 Firefox/3.0.15 ( ) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: cs,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.vodafonesms.cz/index.php?locale=cz&number=773695124&mynumber=596784494&sender=petroff&message=test Cookie: SMS_Internet=2879475161.20480.0000; __gemius_fp=1276059281956_914318332; s_cc=true; s_nr=1276060670069- New; s_sq=vodaczprod%3D%2526pid%253Dhttp%25253A//www.vodafonesms.cz/ index.php%25253Flocale%25253Dcz%252526number %25253D773695124%252526mynumber%25253D596784494%252526sender %25253Dpetroff%252526message%25253Dtest%2526oid%253DOdeslat %252521%2526oidt%253D3%2526ot%253DSUBMIT; public_sms_gw=544fe3e1cde33f7378432b5549da6804 RESPONSE HEADERS Date: Wed, 09 Jun 2010 05:17:04 GMT Server: Apache Location: success.php?locale=cz&omniture= Content-Length: 0 Connection: close Content-Type: text/html; charset=utf-8 Set-Cookie: SMS_Internet=2879475161.20480.0000; expires=Wed, 09- Jun-2010 05:47:04 GMT; path=/ _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
