> I would like to know how I could automatically fill a > (search) form on a web page and download the resulting > html page. More precisely I would like to make a > program that would automatically fill the "Buscador > lista 40" (in spanish, sorry) form in the following > webpage: > http://www.los40.com/actualidad/listas/lista40.html > and download the results for several dates > (dia/mes/año = day/month/year). > I am not sure this is the right place to ask, but I > would be very grateful if anybody can help or redirect > me to another mailing list...
The relevant part of the sites source code is the following: <FORM method="POST" action="busquedas_b.html" name="porFecha"> <TR> <TD BGCOLOR="#333333" WIDTH="2"><img SRC="/images/0.gif" WIDTH="4" HEIGHT="4" BORDER="0"></TD> <TD align="right" WIDTH="25" BGCOLOR="#666666"><font face="Arial, Helvetica, sans-serif" size="1" color="#666666"><input type="text" name="byDay" class="campotxt9" size="1" value="dia" onFocus="if(this.value=='dia')this.value='';" onblur="if(this.value=='')this.value='dia';"></TD> <TD align="right" WIDTH="15" BGCOLOR="#666666"><font face="Arial, Helvetica, sans-serif" size="1" color="#666666"><input type="text" name="byMonth" class="campotxt9" size="1" value="mes" onFocus="if(this.value=='mes')this.value='';" onblur="if(this.value=='')this.value='mes';"></TD> <TD align="right" WIDTH="25" BGCOLOR="#666666"><font face="Arial, Helvetica, sans-serif" size="1" color="#666666"><input type="text" name="byYear" class="campotxt2" size="1" value="año" onFocus="if(this.value=='año')this.value='';" onblur="if(this.value=='')this.value='añ';"></TD> <TD BGCOLOR="#333333" align="left"><A href="javascript:document.porFecha.submit();"><img SRC="/images/ir4.gif" BORDER="0" title="Ir"></a></TD> </TR> </FORM> from the first line you can see that submitting the result will request the page "busquedas_b.html" -- so your script has to request this site directly with the form parameters given as additional data (method="POST"). which form parameters to pass can be seen in the name attributes of the input-tags, e.g. <input type="text" name="byYear">. urllib provides the methods urlopen and urlencode to setup the query string and fetch the result: from urllib import urlopen,urlencode form_data = { 'byDay' : '12' , 'byMonth' : '07' , 'byYear' : '2005' } html_data = urlopen( "http://www.los40.com/actualidad/listas/busquedas_b.html", urlencode(form_data) ).read() print html_data - harold - -- "I know what I believe. I will continue to articulate what I believe and what I believe - I believe what I believe is right." -- George W. Bushman -- http://mail.python.org/mailman/listinfo/python-list