0

ycharts.com という金融データ Web サイトからデータを取得する簡単なスクリプトを自動化しようとしています。簡単な例は、過去 3 年間の最初の 1 月の Google の P/E 比率を引き出すことです。数値を取得するためのスクリプトは既に作成しています。私の問題は、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>

このトピックについて多くの調査を行ってきましたが、解決策が見つからないようです。どんな助けでも大歓迎ですが、私は誰の時間を無駄にしたくありません. (これを解決するのに多大な労力がかかる場合は、解決策に夢中にならないでください。私に知らせてください。私は敗北を受け入れます。)

4

1 に答える 1