php如何抓取动态页面的数据


http://jipiao.kuxun.cn/beijing-shanghai.html?2012-07-21#page_loc
现在要抓取酷讯旅游网的机票信息,可是他这个信息是动态生成的貌似调用了ajax
我怎么才能抓取他的信息呢,很奇怪的是在百度上搜还能都到酷讯的机票信息
百度是怎么收录这些动态的信息呢,求解答
百度上搜索“机票 中国国航 CA1857”就能搜出来

正则表达式 php

★Venus★ 11 years, 8 months ago

抓取这个站的数据比较复杂,页面好几块都是异步加载的,页面加载完毕就会有15个左右XHR请求。首先要弄清楚是那个请求返回的是你想要的数据,比如:
http://jipiao.kuxun.cn/internal_v2/aj...
得先弄清楚每个参数的意思,然后才可以自己构造,直接访问不可以,做了referer验证,抓取这个地址如下代码:

   
  $aContext = array(
  
'http' => array(
'method' => 'GET',
'header' =>"Referer:http://jipiao.kuxun.cn/beijing-shanghai.html\r\n"
),
);
$cxContext = stream_context_create($aContext);

$cont = file_get_contents("http://jipiao.kuxun.cn/internal_v2/ajax.php?from=PEK&to=SHA&date=2012-07-21&queryid=8e99dbcdcc58c75c&action=getSingleData_v3&p=1167634238556&fn_md5=&emptyrec=0&ota_md5=", False, $cxContext);

echo $cont;

请输入图片描述

响应的数据完全不知道是啥,需要找对网站相对应的处理数据的js,才能处理出页面显示的效果, 总体来说抓取这个网站有难度。
还有一个思路就是模拟百度去抓取,不知道是否可行

emilyX answered 11 years, 8 months ago

Your Answer