2013-03-21 42 views
1

给出404错误我试图使用机械化perl中this site中的特定电视节目的下一集的日期。表单提交后的重定向使用WWW :: Mechanize(perl)

# getting episode number & date 

# create a new browser 
use WWW::Mechanize; 
my $browser = WWW::Mechanize->new(autocheck => 0); 

# fill search form, getting to tv show page 
my $url= "http://next-episode.net/"; 
$browser->get($url); 
$browser->form_name("search"); 
$browser->field("search", "big bang"); 
$browser->click(); 

print $browser->content(); 

我无法进入电视节目网页。我只收到了404页面:“对不起,找不到您正在查找的网页!您可能输入了错误的网址,或者它可能已被严重链接或移动。”

我填错了吗?

+0

ofc“大爆炸”最终会成为一个变量。 atm我正在使用“大爆炸”只是为了参考,因为搜索手动让我进入正确的页面。 – Thatkookooguy 2013-03-21 17:30:20

+0

看看页面,它看起来像那个表单通常运行一个JavaScript而不是提交表单。 (机械不做JS) – geoffspear 2013-03-21 17:35:45

回答

1

这是怎么回事? :

my $url = "http://next-episode.net"; 
my $search = "big bang"; 

use WWW::Mechanize; 
use URI::Escape; 
my $browser = WWW::Mechanize->new(autocheck => 1); 

my $string = uri_escape $search; 
$browser->get("$url/site-search-$string.html"); 

print $browser->content(); 

如果你想知道剩下等待的天数,增加额外的线路:

print "$1 days to wait\n" if $browser->content() =~ /(\d+)\s+Day\(s\)\s+/; 

(我用正则表达式在这里,因为这里HTML为奇数)

+0

太棒了!它比我写的更好(更短):-) – Thatkookooguy 2013-03-21 18:28:19

+0

不需要cookies,删除。感谢upvote /接受答案,如果它符合您的需求 – 2013-03-21 18:35:18