php抓取頁面方法匯總

來源:互聯網
上載者:User

在做一些互連網應用的時候,往往需要抓取網路檔案大多數網頁檔案,一般情況下都是利用php類比瀏覽器的訪問,通過http請求訪問url地址,然後得到html原始碼或者其它格式的資料,然後對這些資料進行處理格式化,按照我們事先約定好的方式輸出到終端或其它介面。

一、 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. Regex 

2. PHP DOMDocument對象 

3. 外掛程式(如:PHP Simple HTML DOM Parser) 

如果你對以上內容已經很瞭解,以下內容可以飄過...... 

PHP抓取頁面 

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:\WINDOWS\system32下;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 />\n"; 

} else { 

fwrite($fp, "\n"); 

echo fread($fp, 26); 

fclose($fp); 

?> 

6. 外掛程式 

網上應該有比較多的外掛程式,snoopy外掛程式是在網上搜到的,有興趣的可以研究一下。 

PHP解析xml(html) 

1. Regex: 

複製代碼 代碼如下:

<?php 

$url='http://t.qq.com'; 

$lines_string=file_get_contents($url); 

eregi('<title>(.*)</title>',$lines_string,$title); 

echo htmlspecialchars($title[0]); 

?> 

2. PHP DOMDocument()對象 

如果遠端html或xml存在語法錯誤,php在解析dom的時候會報錯。 

複製代碼 代碼如下:

<?php 

$url='http://www.136web.cn'; 

$html=new DOMDocument(); 

$html->loadHTMLFile($url); 

$title=$html->getElementsByTagName('title'); 

echo $title->item(0)->nodeValue; 

?> 

3. 外掛程式 

本文以PHP Simple HTML DOM Parser為例,進行簡單介紹,simple_html_dom的文法類似jQuery,它讓php操作dom,就像使用jQuery操作dom一樣的簡單。 

複製代碼 代碼如下:

<?php 

$url='http://t.qq.com'; 

include_once('../simplehtmldom/simple_html_dom.php'); 

$html=file_get_html($url); 

$title=$html->find('title'); 

echo $title[0]->plaintext; 

?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.