程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php怎麼抓取網頁內容,怎麼采集某網站上的內容

php怎麼抓取網頁內容,怎麼采集某網站上的內容

編輯:PHP綜合

在學習PHP過程中,很多時候,需要采集(抓取)網頁內容,沒有這個需求的人肯定會懷疑抓取網頁有什麼用?在這裡小編不想解釋太多,感覺很多人會用到這個功能,比如你要分析某個網頁的網頁內容啦質量啦什麼的,總得先獲取到那個網頁的內容吧,自己內網網頁的內容都好說數據庫裡面都有取出來怎麼處理都行,但是是外網的網頁內容呢?只能用PHP的函數采集網頁內容了。

本文只介紹三種方法,兩種比較簡單的獲取網頁代碼的函數一種設置相對比較復雜但是功能強大的函數。用哪個請自己決定,本文章只做分析和介紹。本文重點推薦使用方法三,為什麼請看文章。

方法一、使用file_get_contents獲得網頁源代碼

<?PHP

$fh= file_get_contents('http://www.hzhike.com/');

echo $fh;

?>

這種方法很簡單,其實file_get_contents()有5個參數,但是常用的只有只有這一個參數,而且其他的幾個參數有點雞肋,怎麼說呢用到哪些參數的人覺得很重要,我沒用過所以感覺雞肋,高手勿噴,本文只代表我個人想法。本文考慮到篇幅問題只把本函數介紹到這,詳細介紹請關注微信公眾號(若鴻網),裡面會有本文章的詳細版。

方法二、使用fopen獲得網頁源代碼

<?PHP

$fh = fopen('http://www.hzhike.com/', 'r');

if($fh){

while(!feof($fh)) {

echo fgets($fh);

}

}

?>

其實fopen的參數有四個常用的事前兩個,第一個參數就是你要打開的文件或url,第二個參數是規定要求到該文件/流的訪問類型。第二個參數需要解釋的話會很多文字,本文章會很長,在這裡小編只介紹用的訪問類型’r’,r在這裡的意思就是只讀方式打開,將文件指針指向文件頭。本函數到此為止。

方法三、使用curl獲得網頁源碼

首先說一下為什麼有上面兩種方法了還要介紹這種方法呢,小編是不是很無聊呀,其實不是看下面的文字你就會懂為什麼會介紹curl而且要著重介紹了。

 

我先給大家簡單介紹一下什麼curl?

cURL可以使用URL的語法模擬浏覽器來傳輸數據,因為它是模擬浏覽器,因此它同樣支持多種協議,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協議都可以很好的支持,包括一些:HTTPS認證,HTTP POST方法,HTTP PUT方法,FTP上傳,keyberos認證,HTTP上傳,代理服務器,cookIEs,用戶名/密碼認證,下載文件斷點續傳,上傳文件斷點續傳,http代理服務器管道,甚至它還支持IPv6,scoket5代理服務器,通過http代理服務器上傳文件到FTP服務器等等。

除此之外方法一和方法二沒有辦法有效的做到錯誤處理更沒辦法做到一些高難度的任務加之Curl的這些林林總總的強大功能就是我們要使用它的理由。Curl怎麼用的,步驟如下:

1.初始化,創建一個新cURL資源

2.設置URL和相應的選項

3.抓取URL並把它傳遞給浏覽器

4.關閉cURL資源,並且釋放系統資源

下面看代碼:

<?PHP

//1.初始化,創建一個新cURL資源

$ch = curl_init();

//2.設置URL和相應的選項

curl_setopt($ch, CURLOPT_URL, "http://www.iruohong.com/");

curl_setopt($ch, CURLOPT_HEADER, 0);

//3.抓取URL並把它傳遞給浏覽器

curl_exec($ch);

//4.關閉cURL資源,並且釋放系統資源

curl_close($ch);

?>

上面過程中第二步最為關鍵,可以設置一些高級設置。而且curl的參數設置有很多詳細參數的介紹都寫下來估計要幾十頁吧。

下面再說一種curl的應用,第一個使用代理ip抓取某網頁內容。為什麼要使用代理進行抓取呢?以搜索引擎為例吧,如果去抓索引擎的數據,短時間內抓的很頻繁的話,你就抓取不到了。索引擎對你的ip地址做限制這個時候,你可以換代理重新抓。

下面看代碼:

<?PHP

$ch= curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.iruohong.com");

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);

curl_setopt($ch, CURLOPT_PROXY, 1.1.1.1:8080); //這裡是代理ip

//url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:passWord');如果要密碼的話,加上這個

$result=curl_exec($ch);

curl_close($ch);

?>

其實curl能用到的地方很多比如模擬登錄了,某些網頁有訪問限制了什麼的都可以用curl去做。這裡不做詳細介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved