2016-05-22 29 views
0

我想通過url讀取和解析頁面。它的URL我創建dynamicaly。 https://search.aviasales.ru/MOW2405CHI30061(城市從 - 出境日期 - 城市到 - 日期到 - 數量)。 但它沒有加載頁面。在頭幾秒鐘只加載一部分。如果我嘗試像這樣加載:完全加載(解析)後導入HTML頁面

 System.Net.WebClient web = new System.Net.WebClient(); 
     web.Encoding = UTF8Encoding.UTF8; 

     string str = web.DownloadString("https://search.aviasales.ru/MOW2405ATH30061"); 
     HtmlDocument doc = new HtmlDocument(); 
     doc.LoadHtml(str); 

我得到頁面的一部分。但我需要其他部分。它幾分鐘後分開加載(角色腳本或部分視圖)。我如何加載完整頁面?

回答

0

該頁面使用AJAX加載數據,所以你的代碼只會給你基本的容器HTML,而不是你想要的。

你必須研究主頁的來源,閱讀Javascript並計算出它獲得數據的AJAX調用。然後您需要調用這些URL並解析數據。

這被稱爲「屏幕刮擦」,並有許多缺陷。這是值得一讀的,並確保你知道你讓自己進入,因爲你可以投入大量的工作來抓取他們的頁面,只是讓他們做一個簡單的改變,完全破壞你的代碼。

這也值得檢查一下,如果他們有一個可以調用的API,因爲它將被記錄並且不會改變。你試圖做的方式非常脆弱。

+0

謝謝,Avrohom!這是獲得工作的測試任務的一部分。是的,通常它使用API​​,但現在測試任務是解析。 – Jakobinec

+0

@Jacobinec在這種情況下,您仍然需要找到數據服務的URL,並在代碼中使用該URL,而不是使用主頁面URL。 –