2014-03-26 24 views
2

我想從網站收集數據。一些反模式使尋找合適的表單對象變得困難,但我解決了這個問題。我正在使用post方法來解決一些JavaScript作爲包裝提交表單的問題。我的問題似乎是從mechanize-> post方法獲得結果。perl檢索機械化後的頁面細節:: POST

這裏是我的代碼的縮寫版本。

use strict; 
use warnings; 
use HTML::Tree; 
use LWP::Simple; 
use WWW::Mechanize; 
use HTTP::Request::Common; 
use Data::Dumper; 
$| = 1; 

my $site_url = "http://someURL"; 
my $mech = WWW::Mechanize->new(autocheck => 1); 
foreach my $number (@numbers) 
{ 
    my $content = get($site_url); 
     $mech->get ($site_url); 

    my $tree = HTML::Tree->new(); 

    $tree->parse($content); 

    my ($title) = $tree->look_down('_tag' , 'a'); 
    my $atag = ""; 
    my $atag1 = ""; 
    foreach $atag ($tree->look_down(_tag => q{a}, 'class' => 'button', 'title' => 'SEARCH' ) ) 
    { 
     print "Tag is ", $atag->attr('id'), "\n"; 
     $atag1 = Dumper $atag->attr('id'); 
    } 

# Enter permit number in "Number" search field 
    my @forms = $mech->forms; 
    my @fields =(); 
    foreach my $form (@forms) 
    { 
     @fields = $form->param; 
    } 
    my ($name, $fnumber) = $fields[2]; 
    print "field name and number is $name\n"; 
    $mech->field($name, $number, $fnumber); 
    print "field $name populated with search data $number\n" if $mech->success(); 

    $mech->post($site_url , 
    [ 
     '$atag1' => $number, 
     'internal.wdk.wdkCommand' => $atag1, 
    ]) ; 

print $mech->content; # I think this is where the problem is. 

}

的數據,我從我的最後的打印語句得到的是從德原始URL中的數據不是頁面的POST命令應該帶我去。我做錯了什麼?

非常感謝

更新

我沒有Firefox的安裝,所以我回避WWW::Mechanize::Firefox故意。

+1

試試:'$ mech-> response-> content;'或'$ mech-> response-> decoded_content;' – jm666

+0

謝謝jm666。 我收到$ mech-> content的迴應; $ mech->響應 - >內容;和$ mech-> response-> decoded_content;但是他們都是開始頁面 - 而不是POST命令應該帶給我的頁面。 – MicrobicTiger

+0

你的代碼沒有任何明顯的錯誤,所以我懷疑這個問題將會針對你正在努力實現的網站。因此,任何人都不可能用你提供的信息來幫助你。 – Miller

回答

0

原來我從POST命令中排除了一些必需的隱藏字段。