2016-05-22 89 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。 –