WWW:: Механизация с помощью Perl

В настоящее время я новичок в использовании WWW::Mechanize и использую его для создания веб-инструмента, который перейдет на школьный веб-сайт и извлечет данные курса, чтобы веб-сайт, который я создаю, мог распознавать конфликты. В настоящее время у меня есть этот код в Perl:

#!/user/bin/perl  
use warnings;
use strict;
use WWW::Mechanize;

my $browser = WWW::Mechanize->new;
$browser->get( 'https://registrar.ucdavis.edu/courses/search/index.cfm');
$browser->form_number(3); #Search Form
$browser->select('subject', 'AAS');
$browser->submit();

print $browser->content();

Как работает сайт, вы входите, выбираете предметную область и затем нажимаете "Поиск". Затем таблица заполняется на основе того, что вы выбрали в формах выше.

В настоящее время я сосредоточен на том, чтобы заставить мой скрипт выбрать один вариант из выпадающего меню, нажать "Поиск", а затем скопировать результаты, но, с одной стороны, я не уверен, работает ли он на самом деле (он не дает мне никаких ошибок, но я не уверен, что он что-то делает) и во-вторых, я не уверен, как просмотреть данные, которые появляются в таблице. Любая помощь будет оценена!

1 ответ

Решение

На этой странице используется магия Javascript. Вам нужно сделать POST-запрос вручную.

Вот запрос POST (из расширения Firefox HTTPFox):

termYear    2014
term    10
course_number   
multiCourse 
course_title    
instructor  
subject AAS
course_start_eval   -
course_start_time   -
course_end_eval -
course_end_time -
course_status   -
course_level    -
course_units    -
virtual -
termCode    201410
runMe   1
clearMe 1
reorder 
gettingResults  0
search  Search
_cf_nodebug true
_cf_nocache true

И вот код:

$mech->post("https://registrar.ucdavis.edu/courses/search/course_search_results_mod8.cfm", 
    Content => {

        termYear => "2014",
        term => "10",
        ...
        subject => "AAS",
        ...
    },
);
Другие вопросы по тегам