Grant Edwards wrote: > On 2005-05-25, rbt <[EMAIL PROTECTED]> wrote: > >>How can I make a python client script connect to a Web server and >>automatically populate form fields and then submit the form? >> >>For example, say I wanted to check and see if 1924 was a leap year... >>how would I populate the 'year' field and then submit it for processing? >>I have no control of the server... just the client script. >> >><form action="cgi-bin/leapyear.py"> >> <p>Enter a year and find out if it's a leap year: >> <input type="text" name="year" size="6"> >> <input type="submit"> >> <input type="reset"> >></form> > > > Just use urllib() and pass the form data to the urlopen() > method. If given data, it will generate a "POST" request > instead of a "GET". Here's a snippet of code from an app of > mine that "fills in a form" and submits it: > > postData = > urllib.urlencode({'submit':'Remove','disp':'M','action':'change_Msgs'}) > > for msgid in msgIDs: > postData += "&msgid="+msgid > > req2 = urllib2.Request("http://mc-s6.postini.com/exec/MsgCtr",postData) > rsp2 = ClientCookie.urlopen(req2) > > In this code I've eyeballed the form and the field names are > hard-wired into the code. If your form doesn't change from one > usage to the next, that's the simplest way to do it. > > In my example I'm using ClientCookie and urllib2 to create/open > the reqeust in two steps because the request seen above won't > work without some cookie values previsouly established in code > that I've snipped. Otherwise all you'd need to do is something > like this: > > urllib.urlopen('http://whatever', > > urllib.urlencode({'field1Name':'value1','field2Name':'value2'})) >
Thanks Grant... I found ClientCookie and ClientForm here: http://wwwsearch.sourceforge.net/ Two great Python modules that really simplify this!!! -- http://mail.python.org/mailman/listinfo/python-list