使用Perl

时间:2016-10-14 17:12:53

标签: perl session cookies lwp

我会尽量提供尽可能多的细节。

使用 Perl ,我试图从Web of Knowledge(WoS)下载JCR(期刊引用报告)的所有期刊的影响因子列表(网址:http://admin-apps.webofknowledge.com/JCR/JCR?RQ=SELECT_ALL&cursor=1 )。应该注意的是,只能使用大多数学术机构(如我的)或付费用户的IP来访问该链接。

每当我访问链接(使用浏览器)并且某个时间已经过去时,会话已过期,因此我需要单击链接(http://admin-router.webofknowledge.com/?DestApp=JCR)以建立新会话。使用我对Firebug的基本知识,我发现当我通过身份验证时,我会得到一个名为jcrsid的cookie,其中包含一个随机字符串值。

我的问题如下: 使用 Perl的LWP模块,我应该采取哪些步骤来建立会话并下载我需要的网页。 (如果我使用LWP下载页面,我下载与我被要求使用浏览器建立新会话时出现的完全相同的页面。)

1 个答案:

答案 0 :(得分:1)

你需要set a cookie_jar on your LWP::UserAgent对象。 LWP :: UA然后将它遇到的所有cookie存储在HTTP::Cookies对象中并为您处理它们。每次请求都会发送它们。

您可以使用空哈希引用{}将cookie存储在内存中。没有必要使用文件来完成这种工作。

use strict;
use warnings;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new(
    cookie_jar => {},
);

就是这样。然后,您将get首先为您提供登录cookie的链接。

my $res_login = $ua->get('http://admin-router.webofknowledge.com/?DestApp=JCR');
die $res_login->status_line unless $res_login->is_success;

之后您可以开始加载页面。 Cookie会自动发送。