2016-08-09 295 views
-1

Ich muss ein Skript erstellen, das auf eine Website zugreift, eine Abfrage absetzt, auf einen der Treffer klickt und die URL des Ergebnisses zurücksendet. Was ich festhalte, ist, die Abfrage an erster Stelle einzureichen. Hier ist, was ich habe:Perl LWP: Senden einer Abfrage - Fehler 400 URL muss absolut sein

use strict; 
use warnings; 
use LWP::UserAgent; 
my $entry = $ARGV[0] or die; 
my $url = 'http://genome.ucsc.edu/cgi-bin/hgBlat?hgsid=502819467_w6Oj12MTSqOIIJuSjAKsza4x9yeA&command=start'; 
my $browser = LWP::UserAgent->new; 
my $response = $browser->post(
    '$url', 
    [ 
    'sequence' => $entry, 
    'search' => 'submit' 
    ], 
); 
die "Error: ", $response->status_line 
unless $response->is_success; 

Ich erhalte diese Fehlermeldung: Fehler: 400 URL muss bei LWPtest.pl Linie absolut sein 14. Kann mir jemand erklären, was das bedeutet, und wie ich sollte das Problem beheben? Wie erreiche ich auch die "Klicks" auf einen der Treffer und sende die URL des Ergebnisses zurück?

EDIT:

ich dies in Frage auf der Website:

When including a Genome Browser URL, please remove the hgsid parameter. It is an internally-used parameter that expires after about a day.

nicht sicher, ob dieser Teil des Problems ist; es kann nach "ungefähr einem Tag" ein Problem werden.

+0

Für Ihren Anwendungsfall ersetzen, https://metacpan.org/pod/WWW::Mechanize macht mehr Sinn als LWP mit :: Useragent . Es ist eine Unterklasse, die das Klicken einfacher macht und sich im Grunde wie ein Browser ohne JavaScript-Unterstützung verhält. – simbabque

Antwort

0

Der Code

'$url' 

erzeugt die 4-Zeichenkette

$url 

anstelle von

http://genome.ucsc.edu/cgi-bin/hgBlat?hgsid=502819467_w6Oj12MTSqOIIJuSjAKsza4x9yeA&command=start 

Einfach

'$url' 

mit

$url 
1

$ url on line ~ 10 in einfachen Anführungszeichen, was bedeutet, dass es die Zeichenfolge $ url statt des Wertes der Variablen $ url ist.

'$url', 

zu

$url, 
+1

Um Ihre Antwort besser zu machen, sollten Sie diese vollständige Aussage aus dem Code hinzufügen und zeigen, wie Sie stattdessen vorgehen sollten. – simbabque