متابعة الوصلات و اعادات التحويل
اعادة تحويل
ليس من الغريب ان تقوم بعض الصفحات باعادة تحويل الى صفحات اخرى.
من حسن الحظ ان LWP::UserAgent تقوم بدعم التحويل افتراضيا.
يمكن التحكم بعدد التحولات التي ستتولاها المكتبة من خلال max_redirect
في المثال ادناه صفحة ريداركت التي سنقوم بطلبها ستقوم بعملية اعادة تحويل الى صفحة الاندكس او ما يسمى بالصحفة الافتراضية:
use LWP::UserAgent; my $ua = LWP::UserAgent->new(agent => 'MyWebScaper/1.0 <http://example.com>'); my $response = $ua->get('http://example:3000/redirect'); say $response->decoded_content;
نلاحظ اننا لو قمنا باسناد قيمة صفر الى max_redirect فانه لن يتم تحويلنا الى الصفحة الافتراضية
use LWP::UserAgent; my $ua = LWP::UserAgent->new( agent => 'MyWebScaper/1.0 <http://example.com>', max_redirect => 0 ); my $response = $ua->get('http://example:3000/redirect'); say $response->decoded_content;
الوصلات
متابعة الوصلات و الروابط مهمة معتادة في تحليل صفحات الويب. مرة اخرى باستخدام منقي CSS يمكننا الحصول على الـ a تاج الخاص بالروابط. لنجرب: use HTML::TreeBuilder::XPath; use HTML::Selector::XPath;
my $html = <<'EOF'; <html> <head> <title>A sample webpage!</title> </head> <body> <h1>Perltuts.com rocks!</h1> <a href="http://perltuts.com">perltuts.com</a> </body> </html> EOF my $tree = HTML::TreeBuilder::XPath->new; $tree->ignore_unknown(0); $tree->parse($html); $tree->eof; my $xpath = HTML::Selector::XPath::selector_to_xpath('a'); my @nodes = $tree->findnodes($xpath); my @attrs = $nodes[0]->getAttributes(); say $attrs[0]->getValue();