2013-09-30 44 views
2

讓我們用這個網頁解決這個問題,因爲我會發布Perl代碼片段和報告的錯誤/信息消息。在finance.yahoo.com輸入你最喜歡的股票(我使用了GEOR)。點擊走,然後在左側面板上選擇歷史價格。底部形式是這個問題的關注點之一。Perl WWW機械化submit_form()不指向form_number請求如何解決?

此頁面上顯示有兩種形式的提交,第二種是我想要激活並提交的名稱/值。在執行我的Perl代碼時,無論我將form_number => xx設置爲什麼,它似乎都卡在第一個代碼上。我希望第二個應該返回與我通過with_fields參數提交的計劃價值有關的歷史價格表格,但是會嘗試提交到代碼表單而不是歷史價格表單。代碼在這裏:

$mech -> follow_link (text => "Historical Prices"); 
print "-D-: Submits: ",$mech->find_all_submits(); 
$mech->submit_form(
    form_number => 1, 
    with_fields => {s => "GEOR", 
        a => "11", 
        b => "20", 
        c => "2013", 
        d => "11", 
        e => "31", 
        f => "2013", 
        g => "d", 
        } 
); 
my $PageContent = $mech -> content(); 
&Dumper($PageContent, "Dump_Historic.txt"); 
exit; 

我已經爲0追平值form_number,1,2,3,我仍然獲得在命令窗口中以下消息:

有2種形式與命名第一個用於:「路徑」第41行。這一行是上面的submit_form行。

我已經確認網頁包含歷史價格形式,因爲我在做了以下鏈接cmd之後轉儲了內容,這很雜亂,但您可能更容易查看自己的頁面源,而不是我在此複製內容。您會看到兩個無名提交按鈕文本字段「GO」,以及打算一個「獲取價格」。

那麼我如何才能成功提交包含「獲取價格」的表單,表面上是第二種形式?

+0

嗨,歡迎堆棧溢出。你忘了包含你的控制檯輸出嗎?它說你從控制檯收到一條消息,但你沒有包括它的內容。 –

+0

嗨,感謝您的熱情接待。事實上控制檯在那裏,U應該有「」它。這裏是控制檯消息: – user2829196

+0

控制檯消息:「有兩種形式的命名字段,第一種用於:」路徑「第41行。」 Rhw「路徑」是我正在處理的路徑和perl文件。 – user2829196

回答

0

你可以得到相同的結果與只有一個 GET請求:

$mech->get("http://finance.yahoo.com/q/hp?s=GEOR&a=04&b=22&c=2009&d=08&e=30&f=2013&g=w"); 
+0

其實我正在做頁面datamining上的其他東西。問題不在於如何簡化代碼。問題在於,它需要提交以糾正並獲取包含表格的內容,本例中爲2012年12月15日至2012年12月31日的GEOR的akk股票價格。由於代碼不會提交到form_number 2,因此我會得到內容結果來自一個混淆的形式1的結果.. – user2829196

+0

第二個想法,這似乎是一個圍繞機械化錯誤的工作......我至少會在這個案例中受到歡迎,但擔心的是一些不同類型的頁面,更多比一個提交表單會有同樣的問題...那麼是否有可能提交提交工作?感謝一堆答案。我意識到如果我將其參數化,它將適用於歷史價格... – user2829196