原网站没有移动端的信息查询页面,经过一番查找资料,可以用此方法查询数据,特此记录,以便以后查找和使用。
查询结果返回时包含大量的html代码,本想用正则去过滤掉没用的信息,奈何正则使用不明白所以按照页面查询结果信息用了
$preg = '#(<div>.*?</div>)#';
$arr = preg_split($preg, $body, -1,PREG_SPLIT_DELIM_CAPTURE);
也许会有更好的方法,欢迎留言谢谢!
<?php
/*
*php模拟from提交表单查询信息
*/
ini_set('date.timezone','Asia/Shanghai');
header("Content-Type: text/html; charset=UTF-8");
$bh = "1401738509";
$post_data = "bh=".$bh;
$length = strlen($post_data);
$url = "http://www.jilinshuiwu.com/sfcxwx.aspx?act=cx";
$host = "www.jilinshuiwu.com";
$port = "80";
$request.="POST ".$url." HTTP/1.1\r\n";
$request.="Host: ".$host."\r\n";
$request.="Content-type: application/x-www-form-urlencoded\r\n";
$request.="Accept: */*\r\n";
$request.="Accept-Charset: utf-8, gb2312\r\n";
$request.="Accept-Language: zh-cn, en;q=0.7\r\n";
$request.="Content-length: ".$length." \r\n";
$request.="Connection: close\r\n";
$request.="\r\n";
$request.=$post_data."\r\n";
$request.="\r\n";
$fp = fsockopen($host,$port);
fputs($fp, $request);
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
fclose($fp);
$body= stristr($result,"\r\n\r\n");//???\r\n
$body=substr($body,4,strlen($body));//???header
$preg = '#(<div>.*?</div>)#';
$arr = preg_split($preg, $body, -1,PREG_SPLIT_DELIM_CAPTURE);
unset($arr[0]);//去掉前段html
unset ($arr[count($arr)]);//去掉页面后段html
print_r($arr);
?>
参考资料: