Чтобы найти URL-адрес, вам необходимо изучить HTTP response. Документация HTTP::Response
дает полную информацию о том, как это сделать, но в итоге, вы должны сделать следующее:
use strict;
use warnings;
use feature ':5.10'; # enables "say"
use LWP::UserAgent;
my $url = "http://pricecheckindia.com/go/store/snapdeal/52517?ref=velusliv";
my $ua = LWP::UserAgent->new;
my $req = new HTTP::Request(GET => $url);
my $res = $ua->request($req);
# you should add a check to ensure the response was actually successful:
if (! $res->is_success) {
say "GET failed! " . $res->status_line;
}
# show the base URI for the response:
say "Base URI: " . $res->base;
Вы можете просмотреть переадресации с использованием HTTP::Response
«s redirects
метода:
if ($res->redirects) { # are there any redirects?
my @redirects = $res->redirects;
say join(", ", @redirects);
}
else {
say "No redirects.";
}
В этом case, базовый URI совпадает с $url
, и если вы изучите содержимое страницы, вы можете понять, почему.
# print out the contents of the response:
say $res->decoded_contents;
справа в нижней части страницы, есть следующий код:
$(window).load(function() {
window.setTimeout(function() {
window.location = "http://www.snapdeal.com/product/vox-2-in-1-camcorder/1154987704?utm_source=aff_prog&utm_campaign=afts&offer_id=17&aff_id=1298&source=pricecheckindia"
}, 300);
});
Перенаправление обрабатывается JavaScript, и поэтому не подобран LWP :: UserAgent. Если вы хотите получить этот URL-адрес, вам нужно извлечь его из содержимого ответа (или использовать другой клиент, поддерживающий javascript).
На другой ноте, ваш сценарий начинается так:
use LWP::UserAgent qw();
Код после имени модуля, qw()
, используется для импорта конкретных подпрограмм в сценарий, так что вы можете использовать их по имени (вместо того, чтобы ссылаться на имя модуля и имя подпрограммы). Если qw()
пуст, он ничего не делает, поэтому вы можете просто опустить его.
Можете ли вы сказать мне, что вы хотите получить точно. Ожидаемый результат? – Praveen