php抓取頁面的幾種方法詳解
本篇文章是對php抓取頁面的幾種方法進行了詳細的分析介紹,需要的朋友參考下
在 做一些天氣預報或者RSS訂閱的程式時,往往需要抓取非本地檔案,一般情況下都是利用php模擬瀏覽器的訪問,通過http請求訪問url地址, 然後得到html原始碼或者xml資料,得到資料我們不能直接輸出,往往需要對內容進行提取,然後再進行格式化,以更加友好的方式顯現出來。
下面簡單說一下php抓取頁面的幾種方法及原理:
一、 PHP抓取頁面的主要方法:
1. file()函式
2. file_get_contents()函式
3. fopen()->fread()->fclose()模式
4.curl方式
5. fsockopen()函式 socket模式
6. 使用外掛(如:http://sourceforge.net/projects/snoopy/)
二、PHP解析html或xml程式碼主要方式:
1. file()函式
<?php
$url=`http://t.qq.com`;
$lines_array=file($url);
$lines_string=implode(“,$lines_array);
echo htmlspecialchars($lines_string);
2. file_get_contents()函式
使用file_get_contents和fopen必須空間開啟allow_url_fopen。方法:編輯php.ini,設定 allow_url_fopen = On,allow_url_fopen關閉時fopen和file_get_contents都不能開啟遠端檔案。
<?php
$url=`http://t.qq.com`;
$lines_string=file_get_contents($url);
echo htmlspecialchars($lines_string);
3. fopen()->fread()->fclose()模式
<?php
$url=`http://t.qq.com`;
$handle=fopen($url,”rb”);
$lines_string=””;
do{
$data=fread($handle,1024);
if(strlen($data)==0) {
break;
}
$lines_string.=$data;
}while(true);
fclose($handle);
echo htmlspecialchars($lines_string);
4. curl方式
使用curl必須空間開啟curl。方法:windows下修改php.ini,將extension=php_curl.dll前面的分號去掉,而且需 要拷貝ssleay32.dll和libeay32.dll到C:WINDOWSsystem32下;Linux下要安裝curl擴充套件。
<?php
$url=`http://t.qq.com`;
$ch=curl_init();
$timeout=5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$lines_string=curl_exec($ch);
curl_close($ch);
echo htmlspecialchars($lines_string);
5. fsockopen()函式 socket模式
socket模式能否正確執行,也跟伺服器的設定有關係,具體可以通過phpinfo檢視伺服器開啟了哪些通訊協議,比如我的本地php socket沒開啟http,只能使用udp測試一下了。
<?php
$fp = fsockopen(“udp://127.0.0.1”, 13, $errno, $errstr);
if (!$fp) {
echo “ERROR: $errno – $errstr<br />
“
} else {
fwrite($fp, ”
“)
echo fread($fp, 26)
fclose($fp)
}
6. 外掛
網上應該有比較多的外掛,snoopy外掛是在網上搜到的,有興趣的可以研究一下。
如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/
相關文章
- PHP頁面跳轉幾種實現方法PHP
- Html中引用其他html頁面的幾種方式HTML
- 爬取網頁後的抓取資料_3種抓取網頁資料方法網頁
- JS建立物件幾種不同方法詳解JS物件
- java抓取HTML頁面的資料(淘寶頁面),JavaHTML
- php生成唯一id的幾種解決方法PHP
- 獲得同級iframe頁面的指定ID元素的幾種實現方法
- button按鈕重新整理頁面的幾種方式
- php呼叫webservice的幾種方法PHPWeb
- 詳解瀏覽器跨域的幾種方法瀏覽器跨域
- PHP中獲取當前頁面的各種URL格式PHP
- 批量殺死MySQL連線的幾種方法詳解MySql
- Flex與後臺互動的幾種方法詳解Flex
- ASP.NET重新整理頁面的六種方法ASP.NET
- 頁面重定向幾種方法總結
- 超全的JS重新載入當前頁面的幾種方式JS
- 【Python】Python抓取分享頁面的原始碼示例Python原始碼
- PHP生成隨機密碼的幾種方法PHP隨機密碼
- ASP.net中的幾種分頁方法ASP.NET
- 詳解ASP.NET頁面的aspx擴充套件ASP.NET套件
- vue專案重新整理當前頁面的三種方法Vue
- ASP.NET重新整理頁面的六種方法總結ASP.NET
- PHP 清除字串中間的空格的幾種方法PHP字串
- php連線mysql資料庫的幾種方法PHPMySql資料庫
- php中計算時間差的幾種方法PHP
- Java for迴圈的幾種用法詳解Java
- php中抓取網頁內容的程式碼PHP網頁
- PHP模擬登陸抓取頁面內容PHP
- 爬蟲抓取網頁的詳細流程爬蟲網頁
- php獲取網頁內容的三種方法PHP網頁
- php 非同步上傳圖片幾種方法總結PHP非同步
- PHP 判斷陣列是否為空的幾種方法PHP陣列
- 解決DNS解析故障的幾種方法DNS
- 網頁抓取五種常用的HTTP標頭網頁HTTP
- PHP 併發場景的幾種解決方案PHP
- Nancy .Net 輕量級mvc框架使用(4)返回資料到頁面的幾種方式NaNMVC框架
- php抓取https網址出現錯誤的解決方法PHPHTTP
- php中Session使用方法詳解PHPSession