2012-06-26 31 views
0

我解析成功的網站,我想但我不能保留這些數據,因爲30分鐘後,我採取的鏈接無效了。任何人都可以解釋我會發生什麼,我該如何解決這個問題? 我的代碼是:解析網站與JSON數據(第2部分)

 WebClient wc = new WebClient(); 
     wc.Headers.Add("Referer", "http://sletat.ru/");//MUST BE THIS HEADER 
     string result = wc.DownloadString("http://module.sletat.ru/Main.svc/GetTours?cityFromId=832&countryId=35&cities=3106&meals=&stars=&hotels=&s_adults=1&s_kids=0&s_kids_ages=&s_nightsMin=6&s_nightsMax=16&s_priceMin=0&s_priceMax=&currencyAlias=EUR&s_departFrom=26%2F06%2F2012&s_departTo=19%2F07%2F2012&visibleOperators=&s_hotelIsNotInStop=true&s_hasTickets=true&s_ticketsIncluded=true&debug=0&filter=0&f_to_id=&requestId=19446078&pageSize=20&pageNumber=1&updateResult=1&includeDescriptions=1&includeOilTaxesAndVisa=1&userId=&jskey=1&callback=_jqjsp&_1340728614816="); 
     result = result.Substring(result.IndexOf("{"), result.LastIndexOf("}") - result.IndexOf("{") + 1); 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     dynamic json = js.DeserializeObject(result); 
     var prices = json["GetToursResult"]["Data"]["aaData"] as object[]; 
     // var operators = ((object[])json["result"]["prices"]).Cast<Dictionary<string, object>>(); 
     var temp = prices.ToList().Take(20).Select(x => new TableRow 
     { 
      Operator = (x as object[])[18].ToString(), 

     }).ToList(); 
     string str = ""; 

     foreach (var tableRow in temp) 
     { 
      str += tableRow.Operator + "<br />"; 
     } 
     Response.Write(str); 

謝謝指教

回答

0

看來,鏈接的是不斷變化的零件上更改每個請求的服務器生成的值。 你可以得到你想要的不是數據在一個單一的一步,但在幾個步驟,如:

  1. 執行主頁http://sletat.ru
  2. 的請求解析步驟1中的反應中你會響應標記找到每個新請求正在改變的鏈接部分。
  3. 使用該數據創建您的請求並將其發送到服務器。