首頁 >後端開發 >php教程 >php如何讀取或抓取遠端程式碼實例詳解

php如何讀取或抓取遠端程式碼實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-17 10:23:002265瀏覽

PHP抓取遠端網站資料的程式碼

現在可能還有很多程式愛好者都會遇到同樣的疑問,就是要如何像搜尋引擎那樣去抓取別人網站的HTML程式碼,然後把程式碼收集整理成為自己有用的資料!今天就等我介紹一些簡單例子吧.
Ⅰ.抓取遠端網頁標題的例子:
以下是程式碼片段:

<?php
/*
+-------------------------------------------------------------
+抓取网页标题的代码,直接拷贝本代码片段,另存为.php文件执行即可.
+-------------------------------------------------------------
*/
error_reporting
(7);
$file = fopen ("http://www.php.cn/", "r");
if (!$file) {
echo "<font color=red>Unable to open remote file.</font>\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
if (eregi ("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
echo "".$title."";
break;
}
}
fclose($file);
//End
?>

Ⅱ.抓取遠端網頁HTML程式碼的範例:
以下是程式碼片段:

<? php
/*
+----------------
+DNSing Sprider
+----------------
*/
$fp = fsockopen("www.php.cn", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br/>\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host:www.php.cn\r\n";
$out .= "Connection: Close \r\n\r\n";
fputs($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
//End
?>

以上兩個程式碼片段都直接Copy回去運行就知道效果了,上面的例子只是抓取網頁資料的雛形,要使其更適合自己的使用,情況有各異.

fopen() 將file 指定的名字資源綁定到一個流上. 
# filesize 傳回檔案大小的位元組數,如果出錯返回FALSE. 
註: 因為PHP 的整數類型是有符號的,並且大多數平台使用32 位元整數,filesize()函數在碰到大於2GB 的檔案時可能會傳回非預期的結果.對於2GB 到4GB 之間的檔案通常可以使用sprintf("%u", filesize($file)) 來克服此問題. 
fread () 從檔案指標handle 讀取最多length 個位元組. 函數在讀取完length 個位元組數,或到達EOF 的時候,或(對於網路流)當一個包可用時就會停止讀取檔案,取決於先碰到哪一種狀況. 
說明:低版用法!建議php5用file_get_contents 

file_get_contents -- 將整個檔案讀入一個字串 
string file_get_contents ( string filename [, int use_include_path [, resource context]]) 
與file() 相同,只除了file_get_contents() 將檔案傳回為一個字串. 

############## #file_get_contents() 函數是用來將檔案的內容讀入到一個字串中的首選方法。如果作業系統支援也會使用記憶體映射技術來增強效能.###

以上是php如何讀取或抓取遠端程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn