[R] help with EXPASY HTML form submission in RCurl package

Duncan Temple Lang duncan at wald.ucdavis.edu
Sat Feb 13 14:34:44 CET 2010



Sunando Roy wrote:
> 
> Hi Duncan,
> 
> Thanks for your help. I changed the P but the output that I get is not
> what I expect. The form gets aborted without any actual output. I get
> the same result with
> 
> postForm("http://www.expasy.ch/tools/protscale.html")


That URL  (...protscale.html) is the HTML page that contains the form.
It is not the URL to which you are supposed to submit the form request.
That information is in the attributes of the <form ..> </form>.
That is

   http://www.expasy.ch/cgi-bin/protscale.pl?1

So you have to know a little about HTML forms in order to
figure out how to map the HTML description to a request.
That is what your browser does ( including hidden fields in
the form, etc.)
It is also the purpose of the R package RHTMLForms (www.omegahat.org/RHTMLForms
and
 install.packages("RHTMLForms", repos = "http://www.omegahat.org/R", type = "source")
)

e.g.

 library(RHTMLForms)
 f = getHTMLFormDescription("http://www.expasy.ch/tools/protscale.html")
 fun = createFunction(f[[2]])


 o = fun(prot_id = "P05130", weight_var = "exponential", style = "POST")

(The protscale.html is malformed with an < that messes up parsing the
 linear option.)

Now, of course, you have to parse the resulting HTML (in the string given in the variable o)
to get the information the form submission generated.


  D.


> 
> just with an added message that there was no input passed on. But with
> the input like I presented I get the same output. I could make some of
> the examples work like for e.g
> 
> postForm("http://www.omegahat.org/RCurl/testPassword/form_validation.cgi",
>             your_name = "Duncan",
>             your_age = "35-55",
>             your_sex = "m",
>             submit = "submit",
>             .opts = list(userpwd = "bob:welcome"))
> 
> which would suggest atleast the setup is correct.
> I parsed the expasy protscale source code to identify the variables but
> the form does not seem to go through. I can post the html body code if
> needed.
> 
> Regards
> 
> Sunando
> On Fri, Feb 12, 2010 at 3:54 PM, Duncan Temple Lang
> <duncan at wald.ucdavis.edu <mailto:duncan at wald.ucdavis.edu>> wrote:
> 
> 
> 
>     Sunando Roy wrote:
>     > Hi,
>     >
>     > I am trying to submit a form to the EXPASY protscale server (
>     > http://www.expasy.ch/tools/protscale.html). I am using the RCurl
>     package and
>     > the postForm function available in it. I have extracted the
>     variables for
>     > the form from the HTML source page. According to the syntax of
>     postForm, I
>     > just need to mention the url and assign values to the input
>     mentioned in the
>     > HTML code.
>     > The code that I am using is:
>     > postForm("http://www.expasy.ch/tools/protscale.html",
>     >     "sequence" = "
>     > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
>     >     scale = "Molecular weight",
>     >     window = "5",
>     >     weight_edges = "100",
>     >     weight_var = "linear",
>     >     norm = "no",
>     >     submit = "Submit"), .checkparams = TRUE)
> 
> 
>     I don't think that is what you actually submitted to R.
>     It is a syntax error as you end the cal to postForm) after "Submit"
>     and then have an extra  ", .checkparams = TRUE)" afterwards.
> 
>     But, when you remove the ')' after  "Submit",
>     the problem you get is that .checkparams is not a parameter
>     of postForm(), but .checkParams is.  R is case-sensitive
>     so the problem is that .checkparams is being treated as a parameter
>     of your form.
> 
>     So change the p to P in .checkparams, and it works.
> 
>      D.
> 
>     > the constant error that I get is:
>     > Error in postForm("http://www.expasy.ch/tools/protscale.html",
>     .params =
>     > list(sequence = "not",  :  STRING_ELT() can only be applied to a
>     'character
>     > vector', not a 'logical'
>     >
>     > Is there any other way to submit an HTML form in R ?
>     >
>     > Thanks for the help
>     >
>     > Regards
>     >
>     > Sunando
>     >
>     >       [[alternative HTML version deleted]]
>     >
>     > ______________________________________________
>     > R-help at r-project.org <mailto:R-help at r-project.org> mailing list
>     > https://stat.ethz.ch/mailman/listinfo/r-help
>     > PLEASE do read the posting guide
>     http://www.R-project.org/posting-guide.html
>     > and provide commented, minimal, self-contained, reproducible code.
> 
>



More information about the R-help mailing list