Загрузка файла, требующего символов в образе безопасности
Я пытаюсь загрузить этот файл (BindingDB_All_2014m4.tsv.zip) на этом веб-сайте ( http://www.bindingdb.org/bind/chemsearch/marvin/SDFdownload.jsp?all_download=yes). В настоящее время я использую Perl с модулем WWW::Mechanize. Тем не менее, я не могу программно загрузить файл, потому что сайт требует, чтобы я вводил символы в изображении безопасности. У меня уже есть аккаунт. Вот следующий код, который я использую:
use strict;
use warnings;
use WWW::Mechanize;
#################################################
#### Downloads relevant files from BindingDB ####
#################################################
#### Get links to downloads ####
my $mech = WWW::Mechanize->new();
$mech->cookie_jar({});
my ($db, $sdf, $rel);
my ($dbfile, $sdffile, $relfile);
$mech->get("http://www.bindingdb.org/bind/chemsearch/marvin/SDFdownload.jsp?all_download=yes");
my $content = $mech->content();
if ($content =~ /\<li\>\<a\shref\=\"(.*?)\"\>BindingDB\_All\_20/)
{
$db = $1;
$dbfile = &file ($db);
}
if ($content =~ /\<li\>\<a\shref\=\"(.*?)\"\>BindingDB\_All\_3D\_20/)
{
$sdf = $1;
$sdffile = &file ($sdf);
}
if ($content =~ /\<li\>\<a\shref\=\"(.*?)\"\>BindingDB\_CID\.txt/)
{
$rel = $1;
$relfile = &file ($rel);
}
#### Download BindingDB_All.tsv ####
$mech->get("http://www.bindingdb.org$db");
my $clone = $mech->clone();
$clone->cookie_jar({});
my $image = $clone->find_image( url_regex => qr/simpleImg/ );
if ($image)
{
$clone->get($image->url, ':content_file' => '/home/wallakin/GLASS/ligand/bindingdb/images/simpleImg.jpg');
}
print "Please copy down the characters in the image, then close it.\n";
display /home/wallakin/GLASS/ligands/bindingdb/images/simpleImg.jpg`;
print "Enter the characters: ";
my $email = 'some email';
my $password = 'some password';
my $answer = <STDIN>;
$mech->form_number(1);
$mech->field( 'email'=> $email );
$mech->field( 'password' => $password );
$mech->field( 'answer'=> $answer );
$mech->submit();
print "Downloading BindingDB_All.tab.zip\n";
$mech->get("http://www.bindingdb.org/bind/downloads/BindingDB_All_2014m4.tsv.zip");
Я получаю следующую ошибку:
Error GETing http://www.bindingdb.org/bind/chemsearch/marvin/SDFdownload.jsp?dimension=&email=something&password=something&answer=something%0A&download_file=%2Fbind%2Fdownloads%2FBindingDB_All_2014m4.tsv.zip: Internal Server Error at get_bindingdb.pl line 56.
Проблема возникает с $mech->submit(), и я последние несколько дней выдергивал свои волосы, пытаясь понять, почему это не работает. Как примечание, это чисто для академических целей, а не для бот-связанных действий. Буду признателен за любые отзывы, и спасибо заранее!