php抓取頁面的幾種方式
我們在開發網路程式時,往往需要抓取非本地檔案,一般情況下都是利用php模擬瀏覽器的訪問,通過http請求訪問url位址, 然後得到html源**或者xml資料,得到資料我們不能直接輸出,往往需要對內容進行提取,然後再進行格式化,以更加友好的方式顯現出來。
下面簡單說一下php抓取頁面的幾種方法及原理:
一、 php抓取頁面的主要方法:
1. file()函式
2. file_get_contents()函式
3. fopen()->fread()->fclose()模式
4.curl方式
5. fsockopen()函式 socket模式
6. 使用外掛程式(如:
二、php解析html或xml**主要方式:
1. file()函式?1
2345
6789
<?php
//定義url
$url='';
//fiel函式讀取內容陣列
$lines_array=file($url);
//拆分陣列為字串
$lines_string=implode('',$lines_array);
//輸出內容,嘿嘿,大家也可以儲存在自己的伺服器上
echo $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都不能開啟遠端檔案。?1
2345
67<?php
//定義url
$url='';
//file_get_contents函式遠端讀取資料
$lines_string=file_get_contents($url);
//輸出內容,嘿嘿,大家也可以儲存在自己的伺服器上
echo htmlspecialchars($lines_string);
3. fopen()->fread()->fclose()模式?1
2345
6789
1011
1213
1415
1617
1819
<?php
//定義url
$url='';
//fopen以二進位制方式開啟
$handle=fopen($url,"rb");
//變數初始化
$lines_string="";
//迴圈讀取資料
do
$lines_string.=$data;
}while(true);
//關閉fopen控制代碼,釋放資源
fclose($handle);
//輸出內容,嘿嘿,大家也可以儲存在自己的伺服器上
echo $lines_string;
4. curl方式
使用curl必須空間開啟curl。方法:windows下修改php.ini,將extension=php_curl.dll前面的分號去掉,而且需 要拷貝ssleay32.dll和libeay32.dll到c:\windows\system32下;linux下要安裝curl擴充套件。?1
2345
6789
1011
1213
1415
<?php
// 建立乙個新curl資源
$url='';
$ch=curl_init();
$timeout=5;
// 設定url和相應的選項
curl_setopt($ch, curlopt_url, $url);
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_connecttimeout, $timeout);
// 抓取url
$lines_string=curl_exec($ch);
// 關閉curl資源,並且釋放系統資源
curl_close($ch);
//輸出內容,嘿嘿,大家也可以儲存在自己的伺服器上
echo $lines_string;
5. fsockopen()函式 socket模式
socket模式能否正確執行,也跟伺服器的設定有關係,具體可以通過phpinfo檢視伺服器開啟了哪些通訊協議。?1
2345
6789
1011
1213
14<?php
$fp = fsockopen("t.qq.com", 80, $errno, $errstr, 30);
if (!$fp) else
fclose($fp);
}6. snoopy外掛程式,最新版本是snoopy-1.2.4.zip last update: 2013-05-30,推薦大家使用
使用網上非常流行的snoopy來進行採集,這是乙個非常強大的採集外掛程式,並且它的使用非常方便,你也可以在裡面設定agent來模擬瀏覽器資訊。?1
2345
6789
1011
12<?php
//引入snoopy的類檔案
require('snoopy.class.php');
//初始化snoopy類
$snoopy = new snoopy;
$url = "";
//開始採集內容
$snoopy->fetch($url);
//儲存採集內容到$lines_string
$lines_string = $snoopy->results;
//輸出內容,嘿嘿,大家也可以儲存在自己的伺服器上
echo $lines_string;
說明:設定agent是在 snoopy.class.php 檔案的第45行,請在該檔案中搜尋 「var $agent」 (引號中的內容)。瀏覽器內容你可以使用php來獲得,
使用 echo $_server['http_user_agent']; 可以得到瀏覽器資訊,將echo出來的內容複製到agent裡面就可以了。
jqurymobile跳轉頁面的幾種方式
有幾種方法來切換頁面 1.mobile.changepage path to page.html 2.mobile.changepage other page.html fade false,false 可以設定頁面切換效果,以及定義引數來控制頁面是否記錄歷史等 3.var pagedata mob...
HtmlAgilityPack 抓取頁面的亂碼處理
htmlagilitypack 抓取頁面的亂碼處理 用來解析 html 確實方便。不過直接讀取網頁時會出現亂碼。實際上,它是能正確讀到有關字符集的資訊,怎麼會在輸出時,沒有取到正確內容。因此,讀兩次就可以了。if interactive r e htmlagilitypack 99964 trunk...
Js常見跳轉頁面的幾種方式
今天整理下我們常用的js跳轉 常用的js跳轉 比如 js倒計時跳轉 pc站跳轉手機站 在原來的窗體中直接js跳轉用 在新窗體中開啟頁面用 js直接跳轉 js返回 head標籤內加如下 實現頁面定時自動跳轉 self.location方式實現頁面跳轉 top.location方式實現頁面跳轉,具體請看...