file_get_contents() 遠程檔案擷取函數,用來擷取遠程頁面內容
preg_match_all()進行全域Regex匹配,匹配多次,用於匹配列表
preg_match ()進行Regex匹配,匹配一次,用於匹配終端
preg_replace ()進行Regex替換,用於過濾終端
具體步驟
Step 1 擷取單頁列表 和 單篇文章內容
在批量採集列表和內容之前,我們先將網站的單頁列表和單篇文章的內容採集作為測試Regex對錯。
列表頁採集文章的連結地址:
| 代碼如下 |
複製代碼 |
<?php //擷取列表 $url = '/s2005/shishi.shtml'; $con=file_get_contents($url); //寫正則擷取列表中的文章連結 /*範例 : <a test=a href='/20130418/n373177942.shtml' target='_blank'>湖南沅陵輸電工程沉船事故共致6人死亡</a>*/ $preg = "|<a test=a href='(.*)' target='_blank'>(.*)</a>|iUs"; // 正則中的/i表示 大小寫不敏感 /U 非貪婪匹配 /s 點號可以匹配分行符號 preg_match_all($preg,$con,$arr); //var_dump($arr); /* array(3) { [0]=> array(40) { [0]=> string(126) "<a test=a href='/20130418/n373180618.shtml' target='_blank'>甘肅河西走廊遭大風沙塵侵襲 瞬時最大風力9級</a>" [1]=> string(112) "<a test=a href='/20130418/n373180612.shtml' target='_blank'>一線城市住宅地價全部環比上漲</a>" ... ... [39]=> string(124) "<a test=a href='/20130418/n373161633.shtml' target='_blank'>湖南衡陽發生一起槍擊案致1人死 警方正緝兇</a>" } [1]=> array(40) { [0]=> string(46) "/20130418/n373180618.shtml" [1]=> string(46) "/20130418/n373180612.shtml" ... ... [39]=> string(46) "/20130418/n373161633.shtml" } [2]=> array(40) { [0]=> string(42) "甘肅河西走廊遭大風沙塵侵襲 瞬時最大風力9級" [1]=> string(28) "一線城市住宅地價全部環比上漲" ... ... [39]=> string(40) "湖南衡陽發生一起槍擊案致1人死 警方正緝兇" } } */ ?> |
單篇文章的採集:
| 代碼如下 |
複製代碼 |
<?php $url = 'http://www.111cn.net'; $con = file_get_contents($url); //Regex分為標題和內容 $title_preg = "|<h1>(.*)</h1>|iUs"; $content_preg = "|<!-- 本文 -->(.*)<!-- 分享 -->|iUs"; preg_match($title_preg,$con,$title_arr); preg_match($content_preg,$con,$content_arr); ?> |