我正在寻求自动化一个快速脚本,该脚本将从名为 ycharts.com 的财务数据网站中提取一些数据。一个简单的例子是在过去 3 年的第一个 1 月拉低谷歌的市盈率。我已经编写了提取数字的脚本,我的问题是发送一个 POST 请求并让它返回有意义的数据。这是我当前的程序,专门用于提取数据,找到解决方案后我可以做剩下的事情。(另外,这不是为了盈利,而是为了我的大学研究。)
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $url = 'http://ycharts.com/companies/GOOG/pe_ratio';
my $formdata = [
pageNum => 1,
startDate => 12/31/2004,
endDate => 01/03/2013,
];
my $response = $ua->post($url, $formdata);
die "Error: ", $response->status_line, "\n"
unless $response->content;
print $response->content;
但这是我打印时得到的内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>403 Forbidden</title>
<style type="text/css">
html * { padding:0; margin:0; }
body * { padding:10px 20px; }
body * * { padding:0; }
body { font:small sans-serif; background:#eee; }
body>div { border-bottom:1px solid #ddd; }
h1 { font-weight:normal; margin-bottom:.4em; }
h1 span { font-size:60%; color:#666; font-weight:normal; }
#info { background:#f6f6f6; }
#info ul { margin: 0.5em 4em; }
#info p, #summary p { padding-top:10px; }
#summary { background: #ffc; }
#explanation { background:#eee; border-bottom: 0px none; }
</style>
</head>
<body>
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>
<div id="explanation">
<p><small>More information is available with DEBUG=True.</small></p>
</div>
</body>
</html>
我已经对该主题进行了大量研究,但似乎无法找到解决方案。任何帮助将不胜感激,但我不想浪费任何人的时间。(如果这需要大量的努力来解决,请不要疯狂地解决问题,告诉我,我会接受失败。)