目标是在完成Ajax调用后从网站检索数据。 当前页面第一次加载时正在检索数据。但所需的数据是在ajax调用后加载的div内部找到的。延迟一段时间后检索网页数据(网页抓取)
总之,情景如下:
甲网页被称为与一些参数(目前使用CsQuery为C#)内的C#代码通过。当发送请求时,页面打开并显示“加载”图片,并在几秒钟后检索所需数据。然而,cSQuery代码“加载”图片检索第一页内容..
的代码如下
UrlBuilder ub = new UrlBuilder("<url>")
.AddQuery("departure", "KHI")
.AddQuery("arrival", "DXB")
.AddQuery("queryDate", "2013-03-28")
.AddQuery("queryType", "D");
CQ dom = CQ.CreateFromUrl(ub.ToString());
CQ availableFlights = dom.Select("div#availFlightsDiv");
string RenderedDiv = availableFlights["#availFlightsDiv"].RenderSelection();
我想补充一点,如果你想要抓取*非常具体的* ajax驱动的网站,那么完全有可能(通常甚至很容易)只是查看源代码并直接定位它们的内部API。要完成多少工作取决于代码是如何混淆和/或编写的。除此之外,还有硒,硒等。 – 2013-03-14 14:08:55
是的,这是一个很好的观点。 – 2013-03-14 17:38:16
感谢您的评论..任何静默实现这一目标的方法(即没有浏览器窗口),并在最小的资源消耗。特定的ajax调用似乎也发送SessionId来生成结果(因此似乎直接调用可能不可能)。 – 2013-03-18 12:51:51