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() 將檔案傳回為一個字串.
以上是php如何讀取或抓取遠端程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!