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() 函数是用来将文件的内容读入到一个字符串中的首选方法.如果操作系统支持还会使用内存映射技术来增强性能.
Atas ialah kandungan terperinci php如何读取或者抓取远程代码实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!