首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不要跟随webarchive.org的重定向

不要跟随webarchive.org的重定向
EN

Stack Overflow用户
提问于 2013-12-14 20:32:55
回答 1查看 229关注 0票数 0

我使用Mojolicious和UserAgent从Webarchive.org获取页面的源代码,解析它,并将其导入DotClear数据库(使用webarchive作为备份)。在源文件中,有“先前”和“下一步”链接,允许访问博客上的不同帖子。

我开发的perl脚本应该通过这些链接来导入这个博客快照的所有页面。它首先获取博客第一篇文章的来源,对其进行解析,将结果放在本地DB中,并在下一篇文章中获取" next“下的链接,以便在下一篇文章中做同样的事情,直到没有更多的"Next”帖子。

至于基地。

但诀窍是,我从源头得到的链接不是Webarchive的链接。Webarchive与快照的链接如下所示:

代码语言:javascript
复制
http://web.archive.org/web/20131012182412/http://www.mytarget.com/post?mypost

"web“和原始URL之间最大的数字是(我猜)快照生成的日期。诀窍是,它在每个快照上都会发生变化,虽然它可能出现在一个帖子上,但下一个帖子已经在另一个日期被快照了。所以URL不合适。

当我单击从源代码获得的链接时,它会将我带到webarchive.org,它会自动搜索我传递的页面,并将我重定向到它。但是,当我试图通过page的get()函数获取源时,它只会得到webarchive的"Page not“页面。

那么,我的问题是:有什么办法让变幻莫测的人跟随维巴基的改变方向吗?我在我的UserAgent上激活了UserAgent(5),但仍然这样做。

这是我的代码:

代码语言:javascript
复制
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;
}

提前谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-22 14:26:19

我终于找到了一条路。我使用这段代码跟踪URL并获得最终到达的URL:

代码语言:javascript
复制
use LWP::UserAgent qw();    
my $ua = LWP::UserAgent->new;
my $ret = $ua->get($url);
$url = $ret->request->uri ."";    
print "URL returned: ".$url."\n";

然后,我使用这个URL获取源代码并获取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20587942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档