2009-11-17 74 views
11

我已經編程了很多年,現在我只有一個問題。編程語言自動導航網站?

什麼編程語言允許您創建可以自動導航網站和執行各種操作的程序?例如,登錄,瀏覽到特定頁面,填寫表格,提取某些文本等。

這與宏不同,因爲宏只執行預定義的一組操作。另一方面,根據屏幕上顯示的內容,程序的行爲會有所不同。

也許某種腳本語言?或者是一種通用語言。您的答覆將不勝感激。

回答

7

我一直在使用Ruby和watir做到這一點,它非常簡單,並通過自動化IE或Firefox的作​​品。

這種方法的瀏覽器處理JavaScript的任何亂七八糟,但你仍然必須將頁面內容,所以你只需要添加您的獨特邏輯就像填寫在線表格的完全訪問權限。

2

您可以在Perl中使用LWP::Simple

你可以找到很多的網站,但Getting more out of LWP::Simple上的信息是Perlmonks的教程。

+0

請不要因爲Perl是亡靈而低估我。 – t3rse 2009-11-17 20:13:06

+0

LWP :: Simple可以獲取單個資源的網頁,但它沒有用於導航網站的任何功能。 – 2009-11-17 20:20:34

0

幾乎任何語言都可以做到這一點,perl,php/curl在linux和asp/C#在Windows中。

檢查了這一點 - PHP Form Filling Tutorial

-1

你可以做到這一切與WebRequest對象在C#

public static void Main() 
{ 
    // Create a request for the URL.   
    WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html"); 
    // If required by the server, set the credentials. 
    request.Credentials = CredentialCache.DefaultCredentials; 
    // Get the response. 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    // Display the status. 
    Console.WriteLine (response.StatusDescription); 
    // Get the stream containing content returned by the server. 
    Stream dataStream = response.GetResponseStream(); 
    // Open the stream using a StreamReader for easy access. 
    StreamReader reader = new StreamReader (dataStream); 
    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 
    // Display the content. 
    Console.WriteLine (responseFromServer); 
    // Cleanup the streams and the response. 
    reader.Close(); 
    dataStream.Close(); 
    response.Close(); 
} 
+0

webrequest et similar(cURL)不允許與表單,javascript等進行交互 – kappa 2013-05-24 10:24:41

3

我相信你是不是在找一個語言,而是一個框架,允許你這樣做這個。這通常由web scraping software完成。有一些在線服務,例如Mozenda,可以讓你做簡單的事情。還有一些框架可以幫助您以更嚴格的方式進行操作。我有一些screen-scraper的經驗,我認爲這是最豐富的功能之一。

另一種類型的框架是網絡爬蟲 - 。這是要經過一個網站,並建立索引(像搜索引擎

6

在Perl中,WWW::Mechanize是用於導航網站的標準工具,它可以處理餅乾,會話,知道如何與表單交互,執行點擊等等,它保持了狀態,因爲它一直沿着它的方向來維持狀態

它的一個缺點是沒有處理javascript,有一些與Javascript交互的Perl模塊,但它們不是't整合WWW :: Mechanize。

1

我肯定會去一些腳本la nguage,Ruby/Mechanize是我的最愛,看看一些examples ......當然,Perl和Python也是不錯的選擇。除非有計劃將它作爲其他應用程序的一部分,否則我會避免使用靜態類型語言 - 過多的樣板代碼恕我直言。

require 'rubygems' 
require 'mechanize' 

agent = WWW::Mechanize.new 
page = agent.get('http://google.com/') 
google_form = page.form('f') 
google_form.q = 'ruby mechanize' 
page = agent.submit(google_form) 
pp page 

機械化是真正偉大的圖書館,因爲它不只是簡單的HTTP GET/POST請求,並取:它跟蹤的cookie密切相關,從而模擬真實的網絡瀏覽器的行爲。

5

這些答案中的很多都是針對刮取應用程序。如果這是你想要的,可以用你選擇的語言來使用WWW :: Mechanize的等價物(Perl是規範的,Python的作品也是如此)。

但是,從您的問題看來,您可能希望自動爲網站進行單元測試。如果是這種情況,除了用於測試任何給定頁面的返回HTML的正確性的框架之外,還需要一個瀏覽器內測試框架。

兩個脫穎而出的是TwillSelenium

這些提供了你所要求的:一個簡單的從腳本瀏覽網站的界面。它們允許更多地控制瀏覽,特別是在JavaScript和各種類型的效果方面,這些效果會在您前進後退到網站上留下痕跡時顯現出來。

1

WatiN是另一種.Net瀏覽和執行各種操作的方式。