2013-03-21 3 views
1

Я пытаюсь взять дату следующего эпизода конкретного телевизионного шоу в this site, используя Механизм в perl.перенаправление после отправки формы дает ошибку 404 с использованием 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: «Извините, страница, которую вы ищете, не может быть найден! Возможно, вы набрали неверный URL-адрес, или он может быть связан плохо или перемещен».

Я неправильно заполняю форму?

+0

ofc «большой взрыв» будет переменной в конечном итоге. atm Я использую «большой взрыв» только для справки, так как поиск вручную приводит меня на правильную страницу. – Thatkookooguy

+0

. Смотря на страницу, похоже, что эта форма обычно запускает javascript, а не представляет форму. (Mechanize не делает JS) – geoffspear

ответ

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

+0

Не нужно куки-файлы, удалены. Спасибо, чтобы ответить/принять ответ, если он соответствует вашим потребностям –