ホームページ >バックエンド開発 >PHPチュートリアル >定期的に収集する問題、解答、オンラインなど。

定期的に収集する問題、解答、オンラインなど。

WBOY
WBOYオリジナル
2016-06-23 14:24:251034ブラウズ

ターゲット ページ: http://www.weather.com.cn/weather/101070101.shtml

その Web ページのソース コードを表示し、425 行のデータを取得したいとします。つまり、「今日は 10 月 16 日水曜日です」 、2013 年、陰暦 9 月 12 日」と 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 ℃、南西の風 (改行) )... このようにして、このデータを全て取り出します

以下のソースコード:

<!--day 1-->          <table class="yuBaoTable" width="100%" border="0" cellspacing="0" cellpadding="0">          <tr>            <td width="15%" rowspan="2" class="t0" style="background:#f4f7fc;"><a title="农历九月十二">16日星期三</a></td>            <td width="12%" style="background:#f4f7fc;">白天</td>            <td width="10%">              <a href="http://www.weather.com.cn/static/html/legend.shtml" target="_blank">                <img src="/m2/i/icon_weather/29x20/d00.gif" />              </a>            </td>            <td width="18%"><a href ="http://baike.weather.com.cn/index.php?doc-view-767.php" target="_blank">晴</a></td>            <td width="15%">              <a href="http://baike.weather.com.cn/index.php?doc-view-1148.php" target="_blank">                <b>高温 <strong>12℃</strong></b>              </a>            </td>            <td width="15%">              <a href="http://baike.weather.com.cn/index.php?doc-view-778.php" target="_blank">                东北风              </a>            </td>            <td width="15%">              <a href="http://baike.weather.com.cn/index.php?doc-view-778.php" target="_blank">                微风              </a>            </td>          </tr>          <tr>            <td style="background:#f4f7fc;">夜间</td>            <td>              <a href="http://www.weather.com.cn/static/html/legend.shtml" target="_blank">                <img src="/m2/i/icon_weather/29x20/n00.gif" />              </a>            </td>            <td><a href ="http://baike.weather.com.cn/index.php?doc-view-767.php" target="_blank">晴</a></td>            <td>              <a href="http://baike.weather.com.cn/index.php?doc-view-1386.php" target="_blank">                <span>低温 <strong>-2℃</strong></span>              </a>            </td>            <td>              <a href="http://baike.weather.com.cn/index.php?doc-view-778.php" target="_blank">                东北风              </a>            </td>            <td>              <a href="http://baike.weather.com.cn/index.php?doc-view-778.php" target="_blank">                微风              </a>            </td>          </tr>          </table>          <!--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
これら 2 行が実行された後も、まだ小さな欠陥があり、多くの不要な行があります。改行は存在します。削除できますか? (以下のソースコードを参照)

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

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

echo preg_replace('/s+/s','',join('0c6dc11e160d3b678d68754cc175188a',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℃西南风微风

改行をスペースに変更する方法はありますか (既存の 0c6dc11e160d3b678d68754cc175188a は保持されます)。

実装するのが簡単でない場合は、忘れてください。これで問題ありません。何と言えばいい?本当にありがとうございます

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。