file_get_contents函數在php中可以直接打開本地文件也可以直接抓取遠程服務器文件,如果簡單的采集我們可以使用file_get_contents直接來操作,如果有防采集我們可能需要代理來操作,下面我來介紹file_get_contents抓取頁面示例.
例1,普通頁面獲取
例如,訪問54master論壇,想抓取首頁里 所有h3標記內的元素,代碼如下:
- $url=http://www.49028c.com;
- $contents=@file_get_contents($url);
- //preg_match_all("/<p class="right forumcount">(.*?)</p>/is",$contents,$content);
- preg_match_all("/<h3>(.*?)</h3>/is",$contents,$content);
- print_r($content[0]);
例2,設置代碼IP去采集數據
使用file_get_contents 和 stream_context_create 即可,代碼如下:
- $aContext = array(
- 'http' => array(
- 'proxy' => 'tcp://192.168.0.2:3128', //這里設置你要使用的代理ip及端口號
- 'request_fulluri' => true,
- ),
- );
- $cxContext = stream_context_create($aContext);
- $sFile = file_get_contents("http://www.49028c.com", False, $cxContext);
- echo $sFile;
以上代碼適用于正常情況,但是如果目標頁面需要登錄或需要認證信息才能訪問的話,可以加多一句代碼,代碼如下:
- $auth = base64_encode('LOGIN:PASSWORD');//LOGIN:PASSWORD 這里是你的賬戶名及密碼
- $aContext = array(
- 'http' => array(
- 'proxy' => 'tcp://192.168.0.2:3128',//這里設置你要使用的代理ip及端口號
- 'request_fulluri' => true,
- 'header' => "Proxy-Authorization: Basic $auth",
- ),
- );
- $cxContext = stream_context_create($aContext);
- $sFile = file_get_contents(http://www.49028c.com, False, $cxContext);
- echo $sFile;
這樣就可以使用代理來抓取頁面或文件了.
新聞熱點
疑難解答