发送请求到一个页面

问题描述:

我试图自动填写一个表单,然后按下该表单上的按钮并等待响应。我如何去做这件事?更具体地说,我有一个--HUGE--收集DNA菌株,我需要与其他菌种进行比较。幸运的是,有一个website正是我所需要的。 基本上,我输入2个不同的DNA序列,然后单击“对齐序列”按钮并得到结果(计算得分不相关)。 有没有办法让Java程序自动插入输入,“点击”按钮并阅读本网站的回复?发送请求到一个页面

谢谢!

+0

我认为,“web开发”标签是无关的。 – Dmitry 2010-03-15 22:02:39

+1

该网站提供下载链接,以便您可以在本地运行它。你检查过了吗? http://fasta.bioch.virginia.edu/fasta_www2/fasta_down.shtml我(可能是有问题的网站的维护者)会喜欢它在webrobot之上。 – BalusC 2010-03-15 22:06:59

在Python中,您可以使用机械化库(http://wwwsearch.sourceforge.net/mechanize/)。这很简单,你不需要很好地了解Python就可以使用它。

简单的例子(填写登录表单):

br = Browser() 
br.open(login_link) 
br.select_form(name="login") 
br["email"] = "[email protected]" 
br["pass"] = "password" 
br.submit() 

你可以使用Selenium来做到这一点。

您可以使用Apache http client发送到网站的请求。

看看有问题的页面的来源,你会找到该部分。这包含需要发送到服务器的所有字段。特别是,你会发现它需要作为Post发送,而不是更常见的Get。上面的链接显示了如何使用http客户端代码进行发布。

你需要为每个域的NameValuePair形式,如这些的:

<input type="hidden" name="rm" value="lalign_x"/> 
<input type="checkbox" name="show_ident" value="1" /> 
<textarea name="query" rows="6" cols="60"> 

它可能会采取一些试验和错误,你得到正确设置的所有字段。我建议用小数据集来做这件事。一旦这一切似乎工作,然后尝试用更大的数据。