用于从选择列表中选择和提交选项的Ruby脚本

用于从选择列表中选择和提交选项的Ruby脚本,ruby,forms,automation,mechanize,Ruby,Forms,Automation,Mechanize,这是我第一次在这里发帖!我正在尝试做一个特定的ruby脚本,它通过一个网站来获取信息,但是我发现这个网站有一个特定的带有提交按钮的选择列表,我想知道如何从列表中选择某个项目并单击其中一个提交按钮,然后将返回的页面保存到一个变量中 选择列表如下所示: <table width="700" border="0" cellspacing="0" cellpadding="2" class="caixa"> <tr> <td align="center">

这是我第一次在这里发帖!我正在尝试做一个特定的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>


0110-多萨奥雷斯大学-安格拉·多萨奥雷斯大学-波塔·德尔加达0200-阿尔加维大学-阿尔加维大学-社会科学学院0203-阿尔加维大学-法国科学技术学院0204-阿尔加维大学-经济学院-国际农业大学Aveiro0400-贝拉大学内部0501-科英布拉大学-科学技术学院A0502-科英布拉大学-迪雷托学院0503-科英布拉大学-经济学院0504-科英布拉大学-农场学院0505-科英布拉大学-莱特拉学院0506-莱特拉大学科英布拉-医学院2507-科英布拉大学-法国教育学院0508-科英布拉大学-法国教育学院602-法国埃斯科拉大学-法国埃斯科拉技术学院603-法国埃斯科拉大学-法国埃斯科拉艺术学院604-法国埃斯科拉大学-社会科学院0700-里斯本大学0701-里斯本大学-里斯本学院702-里斯本大学-迪雷托学院0703-里斯本大学-法尔恰学院0704-里斯本大学-莱特拉学院0705-里斯本大学-美第奇学院0708-里斯本大学-第0709届地区地理研究所-葡京大学-第0710届教育研究所-葡京大学-科学学院0801-葡京大学-退伍军人医学院0802-葡京大学-阿尔奎特建筑学院0803-葡京大学-高等农学研究所A0804-里斯本科技大学-波兰社会科学院805-里斯本科技大学-高等经济和科技研究所0806-里斯本科技大学-摩托学院807-里斯本科技大学-里斯本科技学院0808-葡京大学-高等葡京学院(instalações no Tagus Park)0901-新葡京大学-医学中心902-新葡京大学-社会人文中心0903-新葡京大学-新葡京科技中心1904-新葡京大学-经济中心0906-新葡京大学-高等教育学院信息学院0911-葡京新大学-迪雷托学院1000-明霍大学1101-波尔图大学-营养食品学院1102-波尔图大学-阿尔基特学院1103-波尔图大学-波尔图学院1104-波尔图大学-阿尔基特学院经济1105-波尔图大学-恩根哈里亚学院1106-波尔图大学-农场学院1107-波尔图大学-莱特拉斯学院1108-波尔图大学-医学院1109-波尔图大学-法国教育学院生物工程学院阿贝尔·萨拉扎尔1111-波尔图大学-德斯波尔图学院1113-波尔图大学-登塔里亚医学院1114-波尔图大学-迪雷托学院1201-特拉斯-奥斯-蒙特斯和阿尔托·杜罗大学-阿格里亚和退伍军人学院1202-特拉斯-蒙特斯和阿尔托·杜罗大学-人类社会科学院1203年-特拉斯-奥斯-蒙特斯-阿尔托杜罗大学-科技科学院1204年-特拉斯-奥斯-蒙特斯-阿尔托杜罗大学-环境科学院1205年-特拉斯-奥斯-蒙特斯-阿尔托杜罗大学-人类社会科学院(查维斯)1300年-马德拉大学5302年-里斯本大学-贝拉斯艺术学院5402年-波尔图大学-贝拉斯艺术学院6600年-里斯本大学-登塔利亚医学院6800年-ISCTE-里斯本大学学院

正如您所看到的,有一个预选的选项,但我想选择另一个选项,并使用值“Lista Ordenada de Candidateos”提交。这可能吗

此外,在这一页之后的页面中,还有另一个选择列表,但在该页面中,我想选择每个选项并提交,有什么想法吗

  • 使用Mechanize获取页面
  • 在页面上找到所需的表单
  • 在表单的某个地方找到
  • 更改
    的值
  • 提交表单并获得新页面
  • 想重复就重复
  • #编码: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
    
    有关详细信息,请参阅文档以及、、和的文档

    如最后一个链接所示,如果要在多选中选择多个选项,只需将其
    值设置为字符串数组。如果您不知道这些值,并希望将其全部选中:

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

    所以,您只想提交此表单,但将listagem参数设置为某个值?然后在下面的表单中,设置另一个参数,然后提交该表单?