2012-02-15 106 views
1

我對web開發相當陌生,以前從未做過任何屏幕抓取和網頁抓取,但昨天我的一個朋友問我是否可以抓取一些來自this網站的數據,這不是我的,也不是他的,但數據是公開可用的,甚至可以下載。 數據的問題是,它只能作爲一個文件每個日期或公司,而不是一個文件的多個日期或公司,這涉及到很多繁瑣的'點擊槽'日曆,所以他認爲這將是很好的如果我能夠創建一些應用程序,可以抓住所有的數據,只需點擊一下,並輸出到一個單一的文件或類似的東西。從ASP.NET webForm抓取數據

該網站使用aspx webFrom與__doPostBack檢索不同日期的數據,甚至在XSL中下載數據的鏈接並不是通常的「href = ...」鏈接,他們是,我假設,一些ASP腳本的參考...

說實話,我試過的唯一的事情是PHP cURL, t工作,但因爲我第一次嘗試cURL,我甚至沒有k現在,如果它不起作用,因爲它不可能與捲曲,或者只是因爲我不知道如何使用它。 我只是稍微精通PHP和JavaScript,但不是在ASP中,但我不介意學習新的東西。

所以我的問題是.. 是否有可能從這樣的網站抓取數據?如果是這樣,你會如此善意地給我一些關於如何解決這類問題的提示嗎?

的網站,再次在這裏http://extranet.net4gas.cz/capacity_ee.aspx

感謝

(唷,我的第一個問題..如果不遵守規則,請讓我知道,我會做的更好未來時間)

+0

有可能在PHP,但它與Python Perl或紅寶石機械化容易得多。可能最簡單的是使用硒。 – pguardiario 2012-02-15 23:06:16

回答

1

C#有一個很好的WebClient類做的工作:

// Create web client. 
WebClient client = new WebClient(); 

// Download string. 
string value = client.DownloadString("http://www.microsoft.com/"); 

,一旦你有一個字符串的HTML頁面,你使用正則表達式來湊個您正在尋找的內容。 這裏是一個非常基本的正則表達式給出提示:

Regex regex = new Regex(@"\d+"); 
Match match = regex.Match("hello here 10 values"); 
if (match.Success) 
{ 
    Console.WriteLine(match.Value); 
} 
+0

感謝您的快速回答,我會試試看。 – mkopriva 2012-02-15 18:34:44

1

Marosko,正如你所說的在網站上的數據是向公衆開放,所以可以肯定你能湊數據出來。現在,它要減少手動點擊日期並從中剔除數據。我個人對Curl的工作原理並不瞭解,但我相信它會涉及到很多編碼。我寧願建議您使用某種自動化工具(如軟件應用程序)自動化整個過程。嘗試Automation Anywhere,幾個月前我購買了它用於某些數據提取目的,並且工作得非常好。它是自動化的,您可以檢查它顯示的screen scraping功能。它的我最喜歡的:)

查爾斯

+0

嗨查爾斯,感謝您的建議,但我寧願嘗試自己做,因爲我在學習一些代碼的計算器。 – mkopriva 2012-02-19 15:22:12