扫码关注官方订阅号
有什么办法可以获取到这部分数据:网页链接:http://xxfb.hydroinfo.gov.cn/...网页截图:
大概思路是使用如下方法获取class为sqjbstyle的td数目,再取出来表格td的内容但这样打印出来的长度为0,不知道该怎么弄了,请大神指教下,感谢。代码截图:
业精于勤,荒于嬉;行成于思,毁于随。
$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/...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
提供一个思路:
看看是否可以用iframe来加载,如果可以的话,监听iframe的加载状态,等iframe 加载完毕,获取其HTML内容(此时页面 上的JS已经执行完毕),然后在做内容分解。
也可以看一下他的代码是怎么写的,然后想办法在WEBServer里面跑JS。
http://xxfb.hydroinfo.gov.cn/...
这里面定义了一堆xhr方法,可以看一下他调用了哪些接口,每个接口返回类型是什么,就此写一个文档。
具体代码我就不看了,睡觉去了。
你这样的写法,没办法获取到超警戒信息的表格的。
他应该是通过二次加载的超警信息,有做了防御机制。没办法直接获取,我也不懂。0 0哪个大神能解决下?
超警戒信息链接:

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