2012-10-22 199 views
0

我的最終目標是爲自己編寫一個簡單的程序。它應定期檢查Thinkpad在線商店,如果發現任何符合我的標準的產品,我會發送一封電子郵件給我。如何獲取本網頁的網址

我做了一些研究。要獲取網頁的內容,我可以使用代碼

WebRequest request = WebRequest.Create("http://www.google.com"); 
    WebResponse response = request.GetResponse(); 
    Stream data = response.GetResponseStream(); 
    string html = String.Empty; 
    using (StreamReader sr = new StreamReader(data)) 
    { 
     html = sr.ReadToEnd(); 
    } 

但是,對於在線商店網站,我無法獲取所需網頁的網址。該網站的網址是這樣的格式

http://outlet.lenovo.com/SEUILibrary/controller/e/outlet_us/LenovoPortal/en_US/catalog.workflow:expandcategory?current-catalog-id=A4A41B4CA13D4754AE2FB1EBF357&current-category-id=908B184AED4F29502E6EB3E1E76AFC13&menu-id=products&ref-id=products#/?page-index=1&page-size=10

我篩選結果只顯示新的W系列筆記本電腦,但該過濾器的更換不會影響在瀏覽器地址欄中的網址。我該怎麼辦?

+0

由於聯想在線商店使用JavaScript和Ajax調用的工作原理,使用'從C#WebRequest's不會得到你想要的數據,因爲所有它得到的是純HTML。 –

回答

2

取得任何進展,你應該分析AJAX調用到聯想網站(使用Firebug或Chrome開發者工具是一個良好的開端)。

有你看到的過濾請求發送到

http://outlet.lenovo.com/SEUILibrary/controller/e/outlet_us/LenovoPortal/en_US/catalog.workflow:GetCategoryFacetResults?q=1

,那麼你就需要POST某種形式的數據到URL爲了得到過濾後的結果(這回來HTML和你」不得不以某種方式解析)。

所有這一切都可以通過分析AJAX調用執行。

+0

非常感謝,Khôi。我想我可以從那裏開始。 – Jimbo