2008-10-09 111 views
0

我是一名Java開發人員,並且對自動執行我所獲得的任務有疑問。我每天不得不3次,登錄到我們工作的網站,選擇幾個表單元素,然後點擊提交以打印出報告。我想知道如何編寫某種能夠自動執行此任務的腳本?我應該從哪裏開始?我應該使用哪種語言?我在想PHP可能可以做到這一點,甚至可能是一個greasemonkey腳本?自動從網頁獲取報告

非常感謝。

回答

2

使用PHP檢出cURL。它允許您使用代碼(除移動鼠標之外)執行Web瀏覽器的所有常規功能。是的,你需要做屏幕抓取。

+0

嗨,我只是有同樣的問題,我試過cURL,但無法處理餅乾。你能發佈一個關於如何處理它們的代碼片段嗎? (我對cookies的認識很薄弱)。 – 2012-11-02 11:00:11

0

它被稱爲「網絡抓取」或「屏幕抓取」,並且有很多庫可以做到這一點。但我不能說一個特定於java的工具:我是一個.Net人(.Net方式是System.Net.WebClient或System.Net.HttpWebRequest/System.Net.HttpWebResponse)。但我確定有什麼。

與此同時,第一步是轉到輸入表單值的頁面,並查看頁面的源代碼。查找要填寫的具體< form>元素,並查看它發佈到的位置(它的行動動作)。然後,找到任何<輸入> < select>,< textarea>您使用的元素,包括表單的任何隱藏輸入,並找出需要獲取的值。這會告訴你如何建立你的請求,一旦你找到一個圖書館,讓你發送它。

如果您需要首先登錄網站才能進入頁面,事情會變得更加複雜。您可能需要檢索和解析會話值,或者能夠將某些Cookie發送到服務器。

0

我不知道你的表格是用什麼語言,但你可以做的是:

  • 形式改寫爲生成時調用
  • 使用cron進入該報告的腳本安排此任務每天完成並將輸出郵寄給您

cron基本上是Unix系統上的計劃任務。基於Windows的服務器可以使用任務計劃程序來達到同樣的目的。

上面假設您可以訪問腳本,該腳本可以在此刻生成報告,並且可以修改它/將其複製到一個新文件,該文件將通過電子郵件將輸出發送給您。如果沒有,那麼你可能需要查看屏幕抓取。由於您是Java開發人員,因此您可能會發現this list of Java screen scraping utilities便於您開始使用。

1

我認爲尚未觸及的潛在問題是您的「登錄此網站」這一短語......根據您需要登錄的方式,您可能需要通過後門進入訪問報告。

過去,當我不得不從第三方網站下載報告時,我遇到了這種問題。問題在於我無法通過身份驗證來訪問報告參數,因爲我需要登錄該網站時採用硬編碼和不太符合腳本的方式。但是,我認爲您的網站在您的組織內部,因此可能會繞過/重做安全要求以訪問數據。如果是這種情況,那麼你應該可以使用上述的一種屏幕抓取方法。

如果不是,您可能需要將實際登錄過程合併到您的腳本或應用程序中,下載並捕獲可能設置的任何cookie並將它們合併到您的數據請求中。