PHP抓取頁面的幾種方式

2021-06-16 14:50:14 字數 3149 閱讀 1953

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方式實現頁面跳轉,具體請看...