2011-05-13 177 views
1

這是我第一次在這裏發表問題!我試圖做一個ruby腳本,通過一個網站來獲取信息,但我發現這個網站有一個提交按鈕的特定選擇列表,我想知道如何從列表中選擇某個項目,以及點擊其中一個提交按鈕,然後將返回的頁面保存到變量中。Ruby腳本從選擇列表中選擇並提交選項

的選擇列表如下:

<table width="700" border="0" cellspacing="0" cellpadding="2" class="caixa"> 
<tr> 
    <td align="center"> 
     <br> 
     <select name="CodEstab" size="9" class="inputtext"> 
     <option value='0110' selected>0110 - Universidade dos Açores - Angra do Heroísmo<option value='0130'>0130 - Universidade dos Açores - Ponta Delgada<option value='0200'>0200 - Universidade do Algarve<option value='0201'>0201 - Universidade do Algarve - Faculdade de Ciências Humanas e Sociais<option value='0203'>0203 - Universidade do Algarve - Faculdade de Ciências e Tecnologia<option value='0204'>0204 - Universidade do Algarve - Faculdade de Economia<option value='0300'>0300 - Universidade de Aveiro<option value='0400'>0400 - Universidade da Beira Interior<option value='0501'>0501 - Universidade de Coimbra - Faculdade de Ciências e Tecnologia<option value='0502'>0502 - Universidade de Coimbra - Faculdade de Direito<option value='0503'>0503 - Universidade de Coimbra - Faculdade de Economia<option value='0504'>0504 - Universidade de Coimbra - Faculdade de Farmácia<option value='0505'>0505 - Universidade de Coimbra - Faculdade de Letras<option value='0506'>0506 - Universidade de Coimbra - Faculdade de Medicina<option value='0507'>0507 - Universidade de Coimbra - Faculdade de Psicologia e de Ciências da Educação<option value='0508'>0508 - Universidade de Coimbra - Faculdade de Ciências do Desporto e Educação Física<option value='0602'>0602 - Universidade de Évora - Escola de Ciências e Tecnologia<option value='0603'>0603 - Universidade de Évora - Escola de Artes<option value='0604'>0604 - Universidade de Évora - Escola de Ciências Sociais<option value='0700'>0700 - Universidade de Lisboa<option value='0701'>0701 - Universidade de Lisboa - Faculdade de Ciências<option value='0702'>0702 - Universidade de Lisboa - Faculdade de Direito<option value='0703'>0703 - Universidade de Lisboa - Faculdade de Farmácia<option value='0704'>0704 - Universidade de Lisboa - Faculdade de Letras<option value='0705'>0705 - Universidade de Lisboa - Faculdade de Medicina<option value='0708'>0708 - Universidade de Lisboa - Instituto de Geografia e Ordenamento do Território<option value='0709'>0709 - Universidade de Lisboa - Instituto de Educação<option value='0710'>0710 - Universidade de Lisboa - Faculdade de Psicologia<option value='0801'>0801 - Universidade Técnica de Lisboa - Faculdade de Medicina Veterinária<option value='0802'>0802 - Universidade Técnica de Lisboa - Faculdade de Arquitectura<option value='0803'>0803 - Universidade Técnica de Lisboa - Instituto Superior de Agronomia<option value='0804'>0804 - Universidade Técnica de Lisboa - Instituto Superior de Ciências Sociais e Políticas<option value='0805'>0805 - Universidade Técnica de Lisboa - Instituto Superior de Economia e Gestão<option value='0806'>0806 - Universidade Técnica de Lisboa - Faculdade de Motricidade Humana<option value='0807'>0807 - Universidade Técnica de Lisboa - Instituto Superior Técnico<option value='0808'>0808 - Universidade Técnica de Lisboa - Instituto Superior Técnico (instalações no Tagus Park)<option value='0901'>0901 - Universidade Nova de Lisboa - Faculdade de Ciências Médicas<option value='0902'>0902 - Universidade Nova de Lisboa - Faculdade de Ciências Sociais e Humanas<option value='0903'>0903 - Universidade Nova de Lisboa - Faculdade de Ciências e Tecnologia<option value='0904'>0904 - Universidade Nova de Lisboa - Faculdade de Economia<option value='0906'>0906 - Universidade Nova de Lisboa - Instituto Superior de Estatística e Gestão de Informação<option value='0911'>0911 - Universidade Nova de Lisboa - Faculdade de Direito<option value='1000'>1000 - Universidade do Minho<option value='1101'>1101 - Universidade do Porto - Faculdade de Ciências da Nutrição e Alimentação<option value='1102'>1102 - Universidade do Porto - Faculdade de Arquitectura<option value='1103'>1103 - Universidade do Porto - Faculdade de Ciências<option value='1104'>1104 - Universidade do Porto - Faculdade de Economia<option value='1105'>1105 - Universidade do Porto - Faculdade de Engenharia<option value='1106'>1106 - Universidade do Porto - Faculdade de Farmácia<option value='1107'>1107 - Universidade do Porto - Faculdade de Letras<option value='1108'>1108 - Universidade do Porto - Faculdade de Medicina<option value='1109'>1109 - Universidade do Porto - Faculdade de Psicologia e de Ciências da Educação<option value='1110'>1110 - Universidade do Porto - Instituto de Ciências Biomédicas Abel Salazar<option value='1111'>1111 - Universidade do Porto - Faculdade de Desporto<option value='1113'>1113 - Universidade do Porto - Faculdade de Medicina Dentária<option value='1114'>1114 - Universidade do Porto - Faculdade de Direito<option value='1201'>1201 - Universidade de Trás-os-Montes e Alto Douro - Escola de Ciências Agrárias e Veterinárias<option value='1202'>1202 - Universidade de Trás-os-Montes e Alto Douro - Escola de Ciências Humanas e Sociais<option value='1203'>1203 - Universidade de Trás-os-Montes e Alto Douro - Escola de Ciências e Tecnologia<option value='1204'>1204 - Universidade de Trás-os-Montes e Alto Douro - Escola de Ciências da Vida e do Ambiente<option value='1205'>1205 - Universidade de Trás-os-Montes e Alto Douro - Escola de Ciências Humanas e Sociais (Chaves)<option value='1300'>1300 - Universidade da Madeira<option value='5302'>5302 - Universidade de Lisboa - Faculdade de Belas-Artes<option value='5402'>5402 - Universidade do Porto - Faculdade de Belas-Artes<option value='6600'>6600 - Universidade de Lisboa - Faculdade de Medicina Dentária<option value='6800'>6800 - ISCTE - Instituto Universitário de Lisboa 
     </select> 
     <br><br> 
    </td> 
</tr> 
<tr> 
    <td align="right" class="tablebuttons"> 
     <input type="hidden" name="CodR" value="11"> 
     <input type="submit" name="listagem" value="Últimos Colocados" style="font-size: 10px;"> 
     <input type="submit" name="listagem" value="Últimos Colocados por Etapa" style="font-size: 10px;"> 
     <input type="submit" name="listagem" value="Lista de Colocados" style="font-size: 10px;"> 
     <input type="submit" name="listagem" value="Lista Ordenada de Candidatos" style="font-size: 10px;"> 
    </td> 
</tr> 

正如你可以看到,有一個預選的選擇,但我想選擇其他選項,並與值提交「利斯塔Ordenada德Candidatos」 。這可能嗎?

另外,在這個之後的頁面中,還有另一個選擇列表,但是在那個頁面中我想選擇每個選項並提交任何想法?

+0

所以你要請選擇這種形式,但與設置爲某一特定值的listagem參數?然後在下面的表單中,設置另一個參數,然後提交該表單? – buruzaemon 2011-05-13 17:14:47

回答

0
  1. 使用機械化來獲取頁面。
  2. 在頁面上找到你想要的表單。
  3. 在窗體的某處找到<select>
  4. 更改<select>的值。
  5. 提交表單並獲取新頁面。
  6. 如你所願重複。

#編碼:UTF-8 需要 '機械化'

Mechanize.new.get('http://foo.com/bar') do |page| 
    # Find the form you want here, since you didn't show it to us 
    form = page.form_with(:action => "blah/blah") 
    form.field_with(:name=>"CodEstab").value = "Lista Ordenada de Candidatos" 
    next_page = form.submit 
    # Find the form on next_page, manipulate it, submit it 
end 

有關詳細信息,請參閱Mechanize Examples文檔,以及用於PageFormSelectList,和MultiSelectList的文檔。

如上一個鏈接所示,如果要在多重選擇中選擇多個選項,只需將它的value設置爲一個字符串數組。如果你不知道的價值觀,並希望將其全部選中:

# Assuming you are using Ruby 1.8.7 or later 
myselect.value = myselect.options.map(&:value)