我使用Mojolicious DOM和UserAgent从Webarchive.org获取页面的源代码,解析并将其导入Dotclear数据库(使用webarchive作为备份)。 在源代码中,有“上一个”和“下一个”链接,可以访问博客上原创的不同帖子。Mojolicious没有遵循webarchive.org的重定向
我开发的perl脚本应该运行这些链接来导入此博客快照的所有页面。 它首先获取博客的第一篇文章的来源,解析它,将结果放入本地数据库,然后获取“Next”下的链接在下一篇文章中做同样的事情,直到没有更多的“Next “职位。
至于基地。
但诀窍是我从源获得的链接不是Webarchive的链接。 Webarchive的快照链接是这样的:
http://web.archive.org/web/20131012182412/http://www.mytarget.com/post?mypost
“网”和原始URL之间的大数字(我猜)创建快照的日期。关键在于它在每个快照中都会发生变化,虽然它可能出现在一篇文章中,但下一篇文章已经在另一个日期上进行了快照。所以URL不适合。
当我点击从源代码获得的链接时,它会将我带到webarchive.org,它会自动在我传递的页面上进行搜索,然后将其重定向到它。 但是,当我尝试通过Mojolicious的get()函数获取源代码时,它只是获取webarchive的“Page not found”页面。
所以,有我的问题:有没有办法让mojolicious遵循webarchive的重定向?我在我的UserAgent上激活了max_redirects(5),但仍然如此。
这里是我的代码:
sub main{
my ($url) = @_;
my $ua = Mojo::UserAgent->new;
$ua = $ua->max_redirects(5);
my $dom = $ua->get($url)->res->dom;
#...Treatment and parsing of the source ...
return $nextUrl;
}
my $nextUrl="http://web.archive.org/web/20131012182412/http://www.mytarget.com/post?mypost";
my $secondUrl;
while ($nextUrl){
$secondUrl = main($nextUrl);
$nextUrl = $secondUrl;
}
在此先感谢...
也许将MOJO_USERAGENT_DEBUG环境变量设置为1将为您提供一些见解。 – sshaw
看起来像一个有趣的问题,你能发布一个更现实的链接,所以我可以试试吗? –