【问题标题】:WWW::Mechanize with PerlWWW::Perl 机械化
【发布时间】:2014-08-29 06:22:24
【问题描述】:

我目前是使用 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();

网站的运作方式,你进去,选择一个主题区域,然后点击“搜索”。然后根据您在上面的表格中选择的内容填充一个表格。

我目前专注于让我的脚本从下拉菜单中选择一个选项,单击“搜索”,然后复制结果,但一方面,我不确定它是否真的有效(它没有给我任何错误,但我不确定它是否在做任何事情)第二,我不确定如何查看表格中弹出的数据。任何帮助将不胜感激!

【问题讨论】:

  • 在 perlmonks 上发帖:perlmonks.com/?node_id=1098948
  • 哈哈,是的,当您搜索我的问题时,您可能遇到了我的另一篇文章。我想我可能会在另一个网站上发帖,看看使用该网站的人是否有解决方案。不是 perlmonks 上的每个人都处于堆栈溢出状态,反之亦然。

标签: perl web-crawler www-mechanize


【解决方案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",
        ...
    },
);

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2011-02-20
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多