Загрузка файла, требующего символов в образе безопасности

Я пытаюсь загрузить этот файл (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(), и я последние несколько дней выдергивал свои волосы, пытаясь понять, почему это не работает. Как примечание, это чисто для академических целей, а не для бот-связанных действий. Буду признателен за любые отзывы, и спасибо заранее!

0 ответов

Другие вопросы по тегам