`

使用PHP简单网页抓取和内容分析

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

没事的时候想抓取点网页看看,也不太懂,只是玩玩,写了点代码,聊以娱乐。

稍微有点意义的函数是:get_content_by_socket(), get_url(), get_content_url(), get_content_object 几个函数,也许能够给你点什么想法。

<?php <br />
//获取所有内容url保存到文件
functionget_index($save_file,$prefix="index_"){
$count=68;
$i=1;
if(file_exists($save_file))@unlink($save_file);
$fp=fopen($save_file,"a+")ordie("Open".$save_file."failed");
while($i$count){
$url=$prefix.$i.".htm";
echo"Get".$url."...";
$url_str=get_content_url(get_url($url));
echo"OK/n";
fwrite($fp,$url_str);
++$i;
}
fclose($fp);
}

//获取目标多媒体对象
functionget_object($url_file,$save_file,$split="|--:**:--|"){
if(!file_exists($url_file))die($url_file."notexist");
$file_arr=file($url_file);
if(!is_array($file_arr)||empty($file_arr))die($url_file."notcontent");
$url_arr=array_unique($file_arr);
if(file_exists($save_file))@unlink($save_file);
$fp=fopen($save_file,"a+")ordie("Opensavefile".$save_file."failed");
foreach($url_arras$url){
if(empty($url))continue;
echo"Get".$url."...";
$html_str=get_url($url);
echo$html_str;
echo$url;
exit;
$obj_str=get_content_object($html_str);
echo"OK/n";
fwrite($fp,$obj_str);
}
fclose($fp);
}

//遍历目录获取文件内容
functionget_dir($save_file,$dir){
$dp=opendir($dir);
if(file_exists($save_file))@unlink($save_file);
$fp=fopen($save_file,"a+")ordie("Opensavefile".$save_file."failed");
while(($file=readdir($dp))!=false){
if($file!="."&&$file!=".."){
echo"Readfile".$file."...";
$file_content=file_get_contents($dir.$file);
$obj_str=get_content_object($file_content);
echo"OK/n";
fwrite($fp,$obj_str);
}
}
fclose($fp);
}


//获取指定url内容
functionget_url($url){
$reg='/^http:////[^//].+$/';
if(!preg_match($reg,$url))die($url."invalid");
$fp=fopen($url,"r")ordie("Openurl:".$url."failed.");
while($fc=fread($fp,8192)){
$content.=$fc;
}
fclose($fp);
if(empty($content)){
die("Geturl:".$url."contentfailed.");
}
return$content;
}

//使用socket获取指定网页
functionget_content_by_socket($url,$host){
$fp=fsockopen($host,80)ordie("Open".$url."failed");
$header="GET/".$url."HTTP/1.1/r/n";
$header.="Accept:*/*/r/n";
$header.="Accept-Language:zh-cn/r/n";
$header.="Accept-Encoding:gzip,deflate/r/n";
$header.="User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;Maxthon;InfoPath.1;.NETCLR2.0.50727)/r/n";
$header.="Host:".$host."/r/n";
$header.="Connection:Keep-Alive/r/n";
//$header.="Cookie:cnzz02=2;rtime=1;ltime=1148456424859;cnzz_eid=56601755-/r/n/r/n";
$header.="Connection:Close/r/n/r/n";

fwrite($fp,$header);
while(!feof($fp)){
$contents.=fgets($fp,8192);
}
fclose($fp);
return$contents;
}


//获取指定内容里的url
functionget_content_url($host_url,$file_contents){

//$reg='/^(#|javascript.*?|ftp:////.+|http:////.+|.*?href.*?|play.*?|index.*?|.*?asp)+$/i';
//$reg='/^(down.*?/.html|/d+_/d+/.htm.*?)$/i';
$rex="/([hH][rR][eE][Ff])/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*/i";
$reg='/^(down.*?/.html)$/i';
preg_match_all($rex,$file_contents,$r);
$result="";//array();
foreach($ras$c){
if(is_array($c)){
foreach($cas$d){
if(preg_match($reg,$d)){$result.=$host_url.$d."/n";}
}
}
}
return$result;
}

//获取指定内容中的多媒体文件
functionget_content_object($str,$split="|--:**:--|"){
$regx="/href/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*(.*?/b>)/i";
preg_match_all($regx,$str,$result);

if(count($result)==3){
$result[2]=str_replace("多媒体:","",$result[2]);
$result[2]=str_replace("","",$result[2]);
$result=$result[1][0].$split.$result[2][0]."/n";
}
return$result;
}

?>




分享到:
评论

相关推荐

    PHP抓取及分析网页的方法详解

    抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开始吧! 首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简单起见,让...

    PHP的cURL库简介及使用示例

    你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一...

    利用PHP制作简单的内容采集器的原理分析

    采集器,通常又叫小偷程序,主要是用来抓取别人网页内容的。关于采集器的制作,其实并不难,就是远程打开要采集的网页,然后用正则表达式将需要的内容匹配出来,只要稍微有点正则表达式的基础,都能做出自己的采集器...

    自己动手写搜索引擎(罗刚著).doc

    3.2 抓取数据库中的内容 36 3.2.1 建立数据视图 36 3.2.2 JDBC数据库连接 36 3.2.3 增量抓取 40 3.3 抓取本地硬盘上的文件 41 3.3.1 目录遍历 41 3.4 本章小结 42 第4章 提取文档中的文本内容 43 4.1 从HTML文件中...

    php_web_spider:A web crawler written in PHP php网络蜘蛛,信息收集工具A web spider, using php, based on cURL & simple html dom

    // 简单配置 cookie文件目录和第三方网页分析库simple_html_dom的位置 define("COOKIE_FILE", "./cookie.txt"); define("PARSER_FILE", './simple_html_dom.php'); // 添加php_web_spider,创建一个实例 require_...

    站长工具源码 v2.0 PHP版.rar

    )10 、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!)11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。)12、国家域名...

    php curl_init函数用法

    使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了

    站长工具—网站信息查询分析系统

    10、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!) 11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。) 12、国家域名...

    八桂大地便民查询工具 v1.0.rar

    10 、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!) 11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。) 12、国家...

    z5站长工具 v2.0.rar

    10 、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!) 11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。) 12、国家...

    站长工具完整无错版 v2.6.rar

    10 、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!) 11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。) 12、国家...

    ZendFramework中文文档

    13.3. 从网页上获得Feed 13.4. RSS Feed的使用 13.5. Atom Feed的使用 13.6. 单个Atom条目的处理 13.7. 修改Feed和条目结构 13.8. 自定义Feed和条目类 14. Zend_Filter 14.1. 简介 14.1.1. 什么是过滤器...

    站长工具 v2.2完整无错版

    10、搜索蜘蛛、机器人模拟工具(通过本工具可以快速模拟搜索引擎蜘蛛访问页面所抓取到的内容信息!) 11、关键词密度检测(通过本工具可以快速检测页面关键词出现的数量和密度,更适合蜘蛛的搜索。) 12、国家域名...

Global site tag (gtag.js) - Google Analytics