【问题标题】:Why can't my Perl script print cookie values?为什么我的 Perl 脚本不能打印 cookie 值?
【发布时间】:2011-03-21 23:28:42
【问题描述】:

当我使用 IE 访问 usatoday.com 时,会在我的 Internet 临时文件文件夹中自动创建 cookie 文件。但是为什么下面的 Perl 脚本没有捕获任何东西呢?

use WWW::Mechanize;
use strict;
use warnings;

my $browser = WWW::Mechanize->new();
my $response = $browser->get( 'http://www.usatoday.com' );
my $cookie_jar = $browser->cookie_jar(HTTP::Cookies->new()); 
$cookie_jar->extract_cookies( $response );
my $cookie_content = $cookie_jar->as_string;
print $cookie_content;

对于其他一些网站,如 amazon.com、google.com 和 yahoo.com,脚本运行良好,但至少在我看来 usatoday.com 也将 cookie 信息发送到浏览器,为什么我得到不同的结果?有什么我想念的吗?

有什么想法吗?谢谢!

【问题讨论】:

  • 使用严格;使用警告;由于“全局符号“$cookie_content”需要显式包名”,您将收到编译错误。将其更正为我的 $cookie_content = $cookie_jar->as_string;
  • 谢谢。我明白了。

标签: perl cookies mechanize


【解决方案1】:

UsaToday 使用 Javascript 设置 cookie。 WWW::Mechanize 不解析或运行 Javascript。

如果您需要使用 cookie 抓取网站,您可以分析 http://i.usatoday.net/_common/_scripts/gel/lib/core/core.js 和其他 JS 文件并确定 cookie 的确切创建方式,并以编程方式自行创建。

【讨论】:

  • 感谢您的指点。我会看看 Win32::IE::Mechanzie 是否有效。
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2017-11-24
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2010-11-09
相关资源
最近更新 更多