2013-04-19 1 views
1

İ очень новичок в perl-модуле www::mechanize, и я хочу функционировать snp id. Для этого я должен создать веб-гусеничный механизм, но у меня возникают трудности. Не знаете, как использовать имена полей или как назначать значения. Мне нужно получить доступ к этому сайту: http://www.ncbi.nlm.nih.gov/projects/SNP/. Пожалуйста, сообщите, что такое имена полей здесь. Заранее спасибо. Я хочу указать имя поля здесь, я должен поместить идентификатор snp для поиска. Я не понимаю, что делать. Прошу помощи.Perl www :: mechanize

use WWW::Mechanize; 
    use strict; 
    use warnings; 
    my $mech = WWW::Mechanize->new; 

    my $snp = 'rs111'; 
    my $URL = "http://www.ncbi.nlm.nih.gov/projects/SNP/"; 

    $mech->get($URL); 

    $mech->submit_form(
    form_number => '1', 
    fields => { 

    'ID' => $snp, 
    }, 
    ); 
    print $mech->content(); 

ответ

5

Использование такого инструмента, как Web Developer add-on for Firefox.

страница имеет три формы.

  1. Id  Name  Method Action 
    ------ ------ ------ -------------------------------------------------- 
    Search Search post  http://www.ncbi.nlm.nih.gov/coreutils/dispatch.cgi 
    
    Elements 
    ======== 
    Id  Name  Type  Value  Label Size Maximum Length 
    ------ ------ ------ -------- ----- ---- ------- ------ 
    Search db  select 13 
    term  term  text    for  24 
    Search submit submit Go 
    Search SITE  hidden NcbiHome 
    
  2. Id Name Method Action 
    -- ----- ------ -------------------------------------------------- 
        frmGo get  http://www.ncbi.nlm.nih.gov/entrez/query.fcgi 
    
    Elements 
    ======== 
    Id Name  Type  Value  Label Size Maximum Length 
    -- -------- ------ ------- ----- ---- ------- ------ 
        db   hidden Books 
        cmd  hidden Search 
        term  input      12 
        Submit  submit Go 
        doptcmdl hidden TOCView 
    
  3. Id Name  Method Action 
    -- -------- ------ -------------------------------------------------- 
        searchID post  getID.cgi 
    
    Elements 
    ======== 
    Id  Name   Type  Value   Label Size Maximum Length 
    ------ ---------- ------ ------------ ----- ---- ------- ------ 
         searchType hidden adhoc_search 
    sub_id sub_id  input     ID: 
    IDtype Type   select dbSNP_rs 
         submit2  submit Search 
         reset  reset Reset 
    
+0

Спасибо за ответ, но я должен используйте модуль perl mechanize. –

+0

Просьба PLZ помочь кому-нибудь –

+0

ха? Надстройка веб-разработчика получает запрашиваемую вами информацию (и я опубликовал ее). Теперь используйте имена, которые он/я прикрепил к WWW :: Mech. – ikegami

0

Для каждого веб-браузера есть инструменты для разработчиков: Dragonfly для Opera (он встроен и я использую его большую часть времени), Firebug для Firefox и т. Д. Я больше всего таких инструментов вам нужно щелкнуть правой кнопкой мыши по элементу вам нужно посмотреть и выбрать что-то вроде «Проверьте элемент с ...» enter image description here

enter image description here

+0

Спасибо за ответ, но я должен использовать perl mechanize специально. Фактически, когда мне нужно выбрать опцию из выпадающего меню, используя оператор select. Я получил ошибку follownf no input для найденного поля –

+0

Во-вторых, еще одна вещь, как я могу понять, что имена полей и имя формы, на самом деле, мне нужно получить данные из трех других веб-сайтов, и вы можете рассказать об этом. Thnk вы так много заранее. Я в большой беде любезно PLZ помощи. –

0

Попробуйте эту версию (ваша форма называется поиск и имя поля вам нужно, это db):

$mech->submit_form(
    name => "Search", 
    fields => { 
     db => $snp, 
    }, 
    button => "submit", 
); 
+0

Благодарим вас за ответ. Теперь я получаю эту ошибку «Ошибка POSTing http://www.ncbi.nlm.nih.gov/coreutils/dispatch.cgi:« И можете ли вы рассказать мне, как я могу узнать имя и имя поля abt имя формы, я просто не понимаю, где имена полей на веб-сайте –

+0

Извините, что задаю очень простые вопросы, я просто хочу спросить, когда я запускаю свою программу через print mech-> conten(), я получаю html-страницу в обратном порядке могу ли я получить выходной файл результата –

+0

Используйте '$ mech-> save_content (" file.name ")' для этого – gangabass