《php抓取及分析网页的方法详解》由会员分享,可在线阅读,更多相关《php抓取及分析网页的方法详解(10页珍藏版)》请在金锄头文库上搜索。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解PHP抓取及分析网页的方法详解本文实例讲述了PHP抓取及分析网页的方法。分享给大家供大家参考,具体如下:抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开始吧!首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简单起见,让我们将变量直接设在脚本中。$url = http:/;?第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里。$url = ht
2、tp:/;$lines_array = file($url);?好了,现在在数组里已经有了文件了。但是,我们想分析的文本可能不全在一行里面。为了解决这个文件,我们可以简单地将数组$lines_array转化成一个字符串。我们可以使用implode(x,y)函数来实现它。如果在后面你想用explode(将字符串变量数组),将x设成|或!或其它类似的分隔符可能会更好。但是出于我们的目的,最好将x设成空格。y是另一个必要的参数,因为它是你想用implode()处理的数组。$url = http:/;$lines_array = file($url);$lines_string = implode(,
3、 $lines_array);?现在,抓取工作就做完了,下面该进行分析了。出于这个例子的目的,我们想得到在到之间的所有东西。为了分析出字符串,我们还需要叫做正规表达式的东西。$url = http:/;$lines_array = file($url);$lines_string = implode(, $lines_array);eregi(.*), $lines_string, $head);?让我们看一下代码。正如你所见,eregi()函数按下面的格式执行:eregi(.*), $lines_string, $head);(.*)表示所有东西,可以解释为,分析在和间的所以东西。$line
4、s_string是我们正在分析的字符串,$head是分析后的结果存放的数组。最后,我们可以输数据。因为仅在和间存在一个实例,我们可以安全的假设数组中仅存在着一个元素,而且就是我们想要的。让我们把它打印出来吧。$url = http:/;$lines_array = file($url);$lines_string = implode(, $lines_array); eregi(.*), $lines_string, $head);echo $head0;?这就是全部的代码了。/获取所有内容url保存到文件function get_index ( $save_file , $prefix =
5、index_ ) $count = 68 ; $i = 1 ; if ( file_exists ( $save_file ) unlink ( $save_file ); $fp = fopen ( $save_file , a+ ) or die( Open . $save_file . failed ); while( $i $url = $prefix . $i . .htm ; echo Get . $url . . ; $url_str = get_content_url ( get_url ( $url ); echo OK/n ; fwrite ( $fp , $url_str
6、 ); + $i ; fclose ( $fp );/获取目标多媒体对象function get_object ( $url_file , $save_file , $split = |-:*:-| ) if (! file_exists ( $url_file ) die( $url_file . not exist ); $file_arr = file ( $url_file ); if (! is_array ( $file_arr ) | empty( $file_arr ) die( $url_file . not content ); $url_arr = array_uniqu
7、e ( $file_arr ); if ( file_exists ( $save_file ) unlink ( $save_file ); $fp = fopen ( $save_file , a+ ) or die( Open save file . $save_file . failed ); foreach( $url_arr as $url ) if (empty( $url ) continue; echo Get . $url . . ; $html_str = get_url ( $url ); echo $html_str ; echo $url ; exit; $obj_
8、str = get_content_object ( $html_str ); echo OK/n ; fwrite ( $fp , $obj_str ); fclose ( $fp );/遍历目录获取文件内容function get_dir ( $save_file , $dir ) $dp = opendir ( $dir ); if ( file_exists ( $save_file ) unlink ( $save_file ); $fp = fopen ( $save_file , a+ ) or die( Open save file . $save_file . failed
9、); while( $file = readdir ( $dp ) != false ) if ( $file != . & $file != . ) echo Read file . $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内容function get_url ( $url ) $reg
10、 = /http:/.+$/ ; if (! preg_match ( $reg , $url ) die( $url . invalid ); $fp = fopen ( $url , r ) or die( Open url: . $url . failed. ); while( $fc = fread ( $fp , 8192 ) $content .= $fc ; fclose ( $fp ); if (empty( $content ) die( Get url: . $url . content failed. ); return $content ;/使用socket获取指定网页
11、function get_content_by_socket ( $url , $host ) $fp = fsockopen ( $host , 80 ) or die( 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
12、.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 2.0.50727)/r/n ; $header .= Host: . $host . /r/n ; $header .= Connection: Keep-Alive/r/n ; /$header .= Cookie: cnzz02=2; rtime=1; ltime=59; cnzz_eid=-/r/n/r/n; $header .= Connection: Close/r/n/r/n ; fwrite ( $fp , $header )
13、; while (! feof ( $fp ) $contents .= fgets ( $fp , 8192 ); fclose ( $fp ); return $contents ;/获取指定内容里的urlfunction get_content_url ( $host_url , $file_contents ) /$reg = /(#|JavaScript.*?|ftp:/.+|http:/.+|.*?href.*?|play.*?|index.*?|.*?asp)+$/i; /$reg = /(down.*?/.html|/d+_/d+/.htm.*?)$/i; $rex = /(hHrReEFf)/s*=/s*/*(/s+)/*/s*/i ; $reg = /(down.*?/.html)$/i ; preg_match_all (