file_get_contents() 遠程文件獲取函數,用來獲取遠程頁面內容
preg_match_all()進行全局正則表達式匹配,匹配多次,用于匹配列表
preg_match ()進行正則表達式匹配,匹配一次,用于匹配終端
preg_replace ()進行正則表達式替換,用于過濾終端
具體步驟
Step 1 獲取單頁列表 和 單篇文章內容
在批量采集列表和內容之前,我們先將網站的單頁列表和單篇文章的內容采集作為測試正則表達式對錯.
列表頁采集文章的鏈接地址,代碼如下:
- <?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://m.survivalescaperooms.com';
- $con = file_get_contents($url);
- //正則表達式分為標題和內容
- $title_preg = "|<h1>(.*)</h1>|iUs";
- $content_preg = "|<!-- 正文 -->(.*)<!-- 分享 -->|iUs";
- preg_match($title_preg,$con,$title_arr);
- preg_match($content_preg,$con,$content_arr);
- ?>
新聞熱點
疑難解答