小编典典

您如何抓取AJAX页面?

ajax

请告知如何抓取AJAX页面。


阅读 299

收藏
2020-07-26

共1个答案

小编典典

概述:

首先,所有屏幕抓取都需要手动查看要从中提取资源的页面。在处理AJAX时,通常只需要分析一些内容,而不仅仅是HTML。

在处理AJAX时,这仅意味着您想要的值不在您请求的初始HTML文档中,而是将执行javascript,该javascript请求服务器提供您想要的其他信息。

因此,您通常可以简单地分析javascript并查看javascript发出的请求,而只需从头开始调用此URL。


例:

以这个为例,假设您要从中进行抓取的页面具有以下脚本:

<script type="text/javascript">
function ajaxFunction()
{
var xmlHttp;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    try
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    catch (e)
      {
      alert("Your browser does not support AJAX!");
      return false;
      }
    }
  }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
      document.myForm.time.value=xmlHttp.responseText;
      }
    }
  xmlHttp.open("GET","time.asp",true);
  xmlHttp.send(null);
  }
</script>

然后,您要做的只是改为对同一服务器的time.asp发出HTTP请求。
来自w3schools的示例


使用C ++进行高级抓取:

对于复杂的用法,如果您使用的是C ++,则还可以考虑使用firefox
javascript引擎SpiderMonkey在页面上执行javascript。

Java高级抓取:

对于复杂的用法,如果您使用的是Java,则还可以考虑将firefox javascript引擎用于Java
Rhino

.NET的高级抓取:

对于复杂的用法,如果您使用的是.Net,则还可以考虑使用Microsoft.vsa程序集。最近被ICodeCompiler / CodeDOM取代。

2020-07-26