• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

正则采集问题,求解,在线等

php 搞代码 3年前 (2022-01-23) 12次浏览 已收录 0个评论
文章目录[隐藏]

目标页:http://www.weather.com.cn/weather/101070101.shtml

查看其网页源码,想得到425行的数据,即“今天是2013年10月16日 星期三 农历九月十二”和621行“沈阳天气预报 (2013-10-16 18:00发布)” 和641行~765行之间主要数据。用图表示一下,见下图:

另外我自己写的一条规则,试着取了下这样的数据”沈阳天气预报 (2013-10-16
11:00发布)”但输入后为空数组,求指导!多谢!

回复讨论(解决方案)

1

$s=file_get_contents('http://www.weather.com.cn/weather/101070101.shtml');preg_match('/<h1 class="weatheH1" id="live">\s+(.+)\s+<\!--today5-->/s',$s,$m);echo $m[1];

2

 preg_match('/<div class="weatherYubao" id="7d">\s+<h1 class="weatheH1">\s+(.+?)\s+<span>/s',$s,$m);echo $m[1];

3 不知道你想要得到什么格式的数据。

一直都感觉正则好高端

1

$s=file_get_contents('http://www.weather.com.cn/weather/101070101.shtml');preg_match('/<h1 class="weatheH1" id="live">\s+(.+)\s+<\!--today5-->/s',$s,$m);echo $m[1];

2

 preg_match('/<div class="weatherYubao" id="7d">\s+<h1 class="weatheH1">\s+(.+?)\s+<span>/s',$s,$m);echo $m[1];

3 不知道你想要得到什么格式的数据。

就是按日期,顺序取到各项值就行,文本就行,比如:星期四 白天晴 高温16摄氏度 西南风微风 夜间晴 低温3摄氏度 西南风微风(换行)…如此把这块数据都取出来

如下源码:

<!---ecms -ecms -ecms day 1-->          <table class="yuBaoTable" width="100%" border="0" cellspacing="0" cellpadding="0">          <tr>            <td width="15%" rowspan="2" class="t0" style="background:#f4f7fc">16日星期三</td>            <td width="12%" style="background:#f4f7fc">白天</td>            <td width="10%">                                                        </td>            <td width="18%">晴</td>            <td width="15%">                              <b>高温 <strong>12℃</strong></b>                          </td>            <td width="15%">                              东北风                          </td>            <td width="15%">                              微风                          </td>          </tr>          <tr>            <td style="background:#f4f7fc">夜间</td>            <td>                                                        </td>            <td>晴</td>            <td>                              <span>低温 <strong>-2℃</strong></span>                          </td>            <td>                              东北风                          </td>            <td>                              微风                          </td>          </tr>          </table>          <!---ecms -ecms -ecms day 2-->

只想要(取得3天数据):16日星期三 白天:晴 12℃ 东北风微风 夜间:晴 -2℃ 东北风微风

另外发现一个小问题(见下图),不知道应该怎样处理一下?

另外发现一个小问题(见下图),不知道应该怎样处理一下?

echo preg_replace(‘/ \s+/s’,”,$result[1]);

3

preg_match_all('/<table class="yuBaoTable" width="100%" border="0" cellspacing="0" cellpadding="0">(.+)<\/table>/isU',$s,$m); echo join('<br>',array_map('strip_tags',array_slice($m[1],0,3)));

哦,写错了。第一个应该是 echo preg_replace(‘/ \s+/s’,”,$result2[1]);

问题3
这两行执行后,还有个小缺陷,有很多不必要的换行存在,能弄掉吗?(查看源代码如下)

今天是2013年10月17日 星期四 农历九月十三  沈阳天气预报 (2013-10-1708:00发布)                      17日星期四            白天                                                                                晴                                          高温 16℃                                                                    西南风                                                                    微风                                                          夜间                                                                                晴                                          低温 3℃                                                                    西南风                                                                    微风                                              <br>                      18日星期五            白天                                                                                晴                                          高温 18℃                                                                    西南风                                                                    3-4级                                                          夜间                                                                                多云                                          低温 6℃                                                                    西南风                                                                    3-4级                                           <em style="color:transparent">本@文来源[email protected]搞@^&代*@码网(</em><q>搞代gaodaima码</q>   <br>                      19日星期六            白天                                                                                阵雨                                          高温 15℃                                                                    西南风                                                                    3-4级                                                          夜间                                                                                多云                                          低温 4℃                                                                    西南风                                                                    微风                                              

echo preg_replace(‘/\s+/s’,”,join(‘
‘,array_map(‘strip_tags’,array_slice($m[1],0,3))));

echo preg_replace(‘/\s+/s’,”,join(‘
‘,array_map(‘strip_tags’,array_slice($m[1],0,3))));

换行是去掉了,但全边一起了

沈阳天气预报 (2013-10-1711:00发布)17日星期四白天晴高温16℃西南风微风夜间晴低温3℃西南风微风<br>18日星期五白天晴高温18℃西南风3-4级夜间多云低温6℃西南风3-4级<br>19日星期六白天阵雨高温15℃西南风3-4级夜间多云低温4℃西南风微风

有办法让换行变成一个空格吗(现有的
保留)?

要是不好实现就算了,这样也可以了。说什么好呢?太感谢了

echo preg_replace(‘/\s+/s’,’ ‘,join(‘
‘,array_map(‘strip_tags’,array_slice($m[1],0,3))));


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:正则采集问题,求解,在线等

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址