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",
...
},
);