2010-03-15 102 views
0

我試圖自動填寫一個表單,然後按下該表單上的按鈕並等待響應。我如何去做這件事?更具體地說,我有一個--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

回答

0

在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() 
0

你可以使用Selenium來做到這一點。

1

您可以使用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"> 

它可能會採取一些試驗和錯誤,你得到正確設置的所有字段。我建議用小數據集來做這件事。一旦這一切似乎工作,然後嘗試用更大的數據。