如何在Perl中从这样的网站获取内容

时间:2014-05-06 18:51:19

标签: perl lwp

我想从网站上获取数据:   http://mops.twse.com.tw/mops/web/t05st03

设置输入id" co_id"的值到1101

<input id="co_id" class="textbox" type="text" onkeydown="{if(event.keyCode==13){ajax1(document.form1,'table01');}}" size="10" value="" name="co_id"></input>

然后单击按钮

<input type="button" onclick="javascript:doAction();hideIt2('quicksearch9');ajax1(document.form1,'table01');" value="搜尋"></input>

该网站将在同一网页上显示额外数据,这些数据是我想要抓取的数据。

我写了一个perl代码

my $url="http://mops.twse.com.tw/mops/web/t05st03"; 
my $mech = WWW::Mechanize->new( );
$mech->get($url);
my $response;
$mech->field(co_id => 1101);
$mech->click_button(name => " 搜尋 ");
$response = $mech->content();
print $response;

但它无法获取$ mech-&gt;内容

中的数据

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您只需在脚本中模拟JavaScript即可。我使用Firefox的HTTPFox扩展来查找POST所需的信息:

use WWW::Mechanize;

my $url="http://mops.twse.com.tw/mops/web/t05st03";
my $co_id = 1101;

my $mech = WWW::Mechanize->new();
$mech->agent_alias("Windows IE 6");

$mech->get($url);

$mech->post("http://mops.twse.com.tw/mops/web/ajax_t05st03",
        Content => {

            encodeURIComponent => 1,
            step => 1,
            firstin => 1,
            off => 1,
            keyword4 => "",
            code1 => "",
            TYPEK2 => "",
            checkbtn => "",
            queryName => "co_id",
            TYPEK => "all",
            co_id => $co_id,
        });

my $response;

$response = $mech->content();