求指教怎么获取该网页动态数据

有什么办法可以获取到这部分数据:
网页链接:http://xxfb.hydroinfo.gov.cn/...
网页截图:
005MTBGujw1faw5alegmxj307w08i74f.jpg

大概思路是使用如下方法获取class为sqjbstyle的td数目,再取出来表格td的内容
但这样打印出来的长度为0,不知道该怎么弄了,请大神指教下,感谢。
代码截图:
图片描述

阅读 4.3k
3 个回答

$ch = curl_init();
        //设置超时
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch,CURLOPT_URL, 'http://xxfb.hydroinfo.gov.cn/dwr/call/plaincall/IndexDwr.getCJXX.dwr');

        //设置header
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        //要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);


        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        //post提交方式
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
            'callCount'=>1,
            'page'=>'/index.html',
            'httpSessionId'=>'2DD215E3F101D30EB5E23D0E3F19E238.tomcat1',
            //这个sessionid和下面的criptSessionId 暂时用的是我网页上的,估计你测试的时候会有问题
            'scriptSessionId'=>'013C85DE9865D5696402D23AB1620423617',
            'c0-scriptName'=>'IndexDwr',
            'c0-methodName'=>'getCJXX',
            'c0-id'=>0,
            'batchId'=>2,
        )));
        $matches=array();
        $data = curl_exec($ch);

        //从data里面解析,可以用正则,更好的是用xml,这里用着正则为例子,解析一个红色的部分,其他的你自己补充一下
        $html = preg_match('/_remoteHandleCallback\((.+)\);/',$data,$matches);
        $html = preg_match('/>([0-9.]+)<\/font>/',$matches[1],$matches);
        print_r($matches[1]);

提供一个思路:
看看是否可以用iframe来加载,如果可以的话,监听iframe的加载状态,等iframe 加载完毕,获取其HTML内容(此时页面 上的JS已经执行完毕),然后在做内容分解。
也可以看一下他的代码是怎么写的,然后想办法在WEBServer里面跑JS。

http://xxfb.hydroinfo.gov.cn/...

这里面定义了一堆xhr方法,可以看一下他调用了哪些接口,每个接口返回类型是什么,就此写一个文档。
具体代码我就不看了,睡觉去了。

你这样的写法,没办法获取到超警戒信息的表格的。
他应该是通过二次加载的超警信息,有做了防御机制。没办法直接获取,我也不懂。0 0哪个大神能解决下?

超警戒信息链接:
http://xxfb.hydroinfo.gov.cn/...
超警信息

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题