目标采集页面如下代码(示例页面,数据可能变化,但格式不会变化)
要求得到table中主要的4项数据:序 号、违法时间、违法地点、违法行为(即93行~130行之间的)
希望能给出详细一点的php代码。
交警查询
- 网站首页
- 沈阳交警
- 交通新闻
- 视频播放
- 为您服务
- 在线办公
- 信息查询
- 征求意见
- 联系我们
| 在线查询 / 电子警察拍照信息
|
友情连接:
Copyright 2009 www.sygajj.gov.cn All Rights Reserved版权所有:沈阳市交通警察支队 E-maill:webmaster@www.sygajj.gov.cn 辽ICP备07501079号 邮编:110003
站长统计
回复讨论(解决方案)
preg_match_all('#(\d+) \s*(.+) \s*(.+) \s*(.+) #isU',$s,$m);print_r($m);
preg_match_all('#(\d+) \s*(.+) \s*(.+) \s*(.+) #isU',$s,$m);print_r($m);
不用正则能实现吗?
你这个需求用正则是最方便的,还想怎么样。
preg_match_all('#(\d+) \s*(.+) \s*(.+) \s*(.+) #isU',$s,$m);print_r($m);
不用正则能实现吗?
正则在这种情况下使用是再好不过了
不知道我调用的对不对,但是输出结果中出现了我不想要的字符。
?Array( [0] => Array ( [0] =>1 2013-02-0711:16 沈阳市永安路 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [1] =>2 2013-03-0808:34 沈阳市三好街文萃路由南向北 通过路口遇停止信号时,停在停止线以内或路口内的 [2] =>3 2013-03-2210:16 沈阳市三好街文萃路4号 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [3] =>4 2013-05-1413:53 沈阳市永安路 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [4] =>5 2013-05-3113:29 沈阳市五里河街 违停,驾驶人不在现场,妨碍其他车辆行人通行的 ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) [2] => Array ( [0] => 2013-02-0711:16 [1] => 2013-03-0808:34 [2] => 2013-03-2210:16 [3] => 2013-05-1413:53 [4] => 2013-05-3113:29 ) [3] => Array ( [0] => 沈阳市永安路 [1] => 沈阳市三好街文萃路由南向北 [2] => 沈阳市三好街文萃路4号 [3] => 沈阳市永安路 [4] => 沈阳市五里河街 ) [4] => Array ( [0] => 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [1] => 通过路口遇停止信号时,停在停止线以内或路口内的 [2] => 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [3] => 违停,驾驶人不在现场,妨碍其他车辆行人通行的 [4] => 违停,驾驶人不在现场,妨碍其他车辆行人通行的 ))
我是这样调用的:
$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+) \s*(.+) \s*(.+) \s*(.+) #isU',$s,$m);print_r($m);
上面的结果中,从第3行至第25行,是我不想要的,而且第47行中出现了空格,这也不是我想要的,求解决代码,多谢!
$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+) \s*(.+) \s*(?: )*(.+) \s*(?: )*(.+) #isU',$s,$m);print_r($m);
$m 的 1 到 4 下标依次表示为 序号、时间、地点、内容
$s = $p->post($remote_server,$post_string);preg_match_all('#(\d+) \s*(.+) \s*(?: )*(.+) \s*(?: )*(.+) #isU',$s,$m);print_r($m);
$m 的 1 到 4 下标依次表示为 序号、时间、地点、内容
试了一下,结果还是与原来的一样,空格字符没能过滤掉
preg_match_all('#
preg_match_all('#
这回正确了
还有个小问题,就是我得到的$m有时会是空数组,没有值,这个怎么能判断一下呢?因为不能正确得到结果时我需要重新执行一遍查询,谢谢!以下是返回空数组时的结果:
Array( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ))
为空时你的数据不是上面那种格式吧,你判断$m[0] 是否为空数组就可以了。
if(empty($m[0])){
重新执行一遍查询
}
为空时你的数据不是上面那种格式吧,你判断$m[0] 是否为空数组就可以了。
if(empty($m[0])){
重新执行一遍查询
}
让你说着了,为空时,不是上面的格式,正则会出错,呵呵,所以判断要在正则之前了。应该判断$s里是否有“验证码输入有误,请重新输入!”,但不知道怎么写?
验证码输入有误,请重新输入!
用strpos() 判断就行吧?
出错时会出现上面那个提示是吧?
if(strpos($s,'验证码输入有误,请重新输入!') !==false){
.....重新执行一遍查询....
}
出错时会出现上面那个提示是吧?
if(strpos($s,'验证码输入有误,请重新输入!') !==false){
.....重新执行一遍查询....
}
又遇到个需要正则的地方,我不会写,帮我看下吧,多谢了
目标页面地址:http://218.25.58.44/searchsys/
需要采集的数据是:“数据最后更新至2013年6月9日”
求规则!
目标在183行,下面是这个页面的源码:
交警查询
- 网站首页
- 沈阳交警
- 交通新闻
- 视频播放
- 为您服务
- 在线办公
- 信息查询
- 征求意见
- 联系我们
|
|
友情连接:
Copyright 2009 www.sygajj.gov.cn All Rights Reserved版权所有:沈阳市交通警察支队 E-maill:webmaster@sygajj.gov.cn 辽ICP备07501079号 邮编:110003
preg_match('#
echo $m[1];
女生的问题回答就是快哦。