Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 延迟后检索网页数据(网页抓取)_C#_Ajax_Web Scraping_Csquery - Fatal编程技术网

C# 延迟后检索网页数据(网页抓取)

C# 延迟后检索网页数据(网页抓取),c#,ajax,web-scraping,csquery,C#,Ajax,Web Scraping,Csquery,其目的是在完成Ajax调用后从网站检索数据。 当前,当页面首次加载时正在检索数据。但是所需的数据是在一个div中找到的,该div是在一个ajax调用之后加载的 总而言之,情况如下: 使用当前使用CsQuery for C的C代码中传递的一些参数调用网页。发送请求时,页面打开,显示加载图片,几秒钟后检索所需数据。但是,cSQuery代码检索加载图片的第一页内容 代码如下 UrlBuilder ub = new UrlBuilder("<url>") .AddQuery("

其目的是在完成Ajax调用后从网站检索数据。 当前,当页面首次加载时正在检索数据。但是所需的数据是在一个div中找到的,该div是在一个ajax调用之后加载的

总而言之,情况如下:

使用当前使用CsQuery for 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();

当你抓取一个站点时,你正在给web服务器打电话,你得到了它提供的服务。如果目标站点的DOM被javascript ajax修改或其他方式修改,除非您将其加载到执行抓取的机器上的某种浏览器引擎中,否则您将永远无法获得该内容,该引擎能够执行javascript调用

当你抓取一个站点时,你正在给web服务器打电话,然后你得到它提供的服务。如果目标站点的DOM被javascript ajax修改或其他方式修改,除非您将其加载到执行抓取的机器上的某种浏览器引擎中,否则您将永远无法获得该内容,该引擎能够执行javascript调用

差不多一年前的问题,你可能已经得到了答案。但是我想在这里提到这个很棒的项目——SimpleBrowser


它使您的DOM保持更新

差不多一年前的问题,你可能已经得到了答案。但是我想在这里提到这个很棒的项目——SimpleBrowser


它使您的DOM保持更新

我还想补充一点,如果您试图创建一个非常特定的ajax驱动的web站点,那么只需查看源代码并直接针对其内部API,通常甚至很容易。工作量的多少取决于代码的模糊程度和/或编写得如何。除此之外,还有硒之类的。谢谢你的评论。。任何实现这一目标的方法。。i、 无浏览器窗口,以最小的资源消耗完成。特定的ajax调用似乎也会发送SessionId来生成结果,因此直接调用似乎是不可能的。通过ajax调用发送会话id是一种常见的方法,可以阻止您执行您正在尝试执行的操作。我要补充的是,如果您试图刮取一个非常特定的ajax驱动的网站,那么这完全是错误的只要查看源代码并直接将其内部API作为目标,通常甚至很容易。工作量的多少取决于代码的模糊程度和/或编写得如何。除此之外,还有硒之类的。谢谢你的评论。。任何实现这一目标的方法。。i、 无浏览器窗口,以最小的资源消耗完成。特定的ajax调用似乎也会发送SessionId来生成结果,因此直接调用似乎不可能。通过ajax调用发送会话id是阻止您执行尝试执行的操作的常见方法。