文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>PHP 抓取和分析

PHP 抓取和分析

时间:2007-02-17  来源:PHP爱好者

  抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开 
始吧! 

  首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简 
单起见,让我们将变量直接设在脚本中。 

<? 
$url = 'http://www.php.net'; 
?> 

  第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里。 

<? 
$url = 'http://www.php.net'; 
$lines_array = file($url); 
?> 

  好了,现在在数组里已经有了文件了。但是,我们想分析的文本可能不全在一行里面。为了解决这个文 
件,我们可以简单地将数组$lines_array转化成一个字符串。我们可以使用implode(x,y)函数来实现它。如 
果在后面你想用explode(将字符串变量数组),将x设成"|"或"!"或其它类似的分隔符可能会更好。但是出于 
我们的目的,最好将x设成空格。y是另一个必要的参数,因为它是你想用implode()处理的数组。 

<? 
$url = 'http://www.php.net'; 
$lines_array = file($url); 
$lines_string = implode('', $lines_array); 
?> 

  现在,抓取工作就做完了,下面该进行分析了。出于这个例子的目的,我们想得到在<head>到</head> 
之间的所有东西。为了分析出字符串,我们还需要叫做正规表达式的东西。 

<? 
$url = 'http://www.php.net'; 
$lines_array = file($url); 
$lines_string = implode('', $lines_array); 
eregi("<head>(.*)</head>", $lines_string, $head); 
?> 

  让我们看一下代码。正如你所见,eregi()函数按下面的格式执行: 

eregi("<head>(.*)</head>", $lines_string, $head); 

  "(.*)"表示所有东西,可以解释为,"分析在<head>和</head>间的所以东西"。$lines_string是我们正 
在分析的字符串,$head是分析后的结果存放的数组。 

  最后,我们可以输数据。因为仅在<head>和</head>间存在一个实例,我们可以安全的假设数组中仅存 
在着一个元素,而且就是我们想要的。让我们把它打印出来吧。 

<? 
$url = 'http://www.php.net'; 
$lines_array = file($url); 
$lines_string = implode('', $lines_array); 
eregi("<head>(.*)</head>", $lines_string, $head); 
echo $head[0]; 
?> 

  这就是全部的代码了。

 leaper 回复于:2003-06-09 10:23:17 不错,可以用来作天气预报了@@@

feming 回复于:2003-06-09 11:58:28 [quote:dfeb37d0a3="leaper"]不错,可以用来作天气预报了@@@[/quote:dfeb37d0a3]     



redfox 回复于:2003-06-09 13:23:43 就是速度慢阿。

DQLA 回复于:2003-06-19 05:12:49 哦可,下载

toplee 回复于:2003-07-03 12:35:21 这些东西可以支持ftp,https等协议,还支持代理,我用它搞了个自动下载mp3的程序,一天可以从各个网站上去抓取mp3,还有歌词和图片都能搞定。。。。

一个字,爽

MaxBSD 回复于:2003-07-03 17:18:26 [quote:02802f4577="toplee"]这些东西可以支持ftp,https等协议,还支持代理,我用它搞了个自动下载mp3的程序,一天可以从各个网站上去抓取mp3,还有歌词和图片都能搞定。。。。

一个字,爽[/quote:02802f4577]     

给个代码看看吧。

redfox 回复于:2003-07-03 22:41:06 小心ip被封,我只用来拉邮件地址 :lol:

dujing 回复于:2005-02-17 10:20:22 小偷程序都是这样做的。PHP确实是太强大了。

HonestQiao 回复于:2005-02-18 11:55:36 哈哈,做这些工作,我一般是使用shell脚本来做的,php cml也可以的
如果托给服务器的php脚本来做,效率太差

dujing 回复于:2005-02-18 12:15:20 我一般是使用shell脚本来做的
============
愿闻其祥。

HonestQiao 回复于:2005-02-18 12:37:01 [quote:de64221843="dujing"]我一般是使用shell脚本来做的
============
愿闻其祥。[/quote:de64221843]
shell的正则表达式的能力,是无与伦比的,做这些文本处理的工作,完全是属于基本应用。
可以使用bash csh perl tcl等等

dujing 回复于:2005-02-18 13:28:26 shell可否用来处理报社的.ps大样文件?.ps大样文件一般是报纸的一个整版,拥有数篇文章,可否用shell分解出一篇篇文章来?

tmdxy 回复于:2005-08-18 02:32:50 fsockopen还可以发送cookie,curl还可以发送来源。。呵呵
其实,偷偷天气预报之类的,建议js+xmlhttp,让客户端操作。。。

waituy 回复于:2005-08-18 13:03:05 [quote:cba4eff4aa="tmdxy"]fsockopen还可以发送cookie,curl还可以发送来源。。呵呵
其实,偷偷天气预报之类的,建议js+xmlhttp,让客户端操作。。。[/quote:cba4eff4aa]

看来还得学习很多东西啊..

牧熊人 回复于:2005-08-18 13:07:21 $url = 'http://www.php.net';
$lines_array = file($url);
$lines_string = implode('', $lines_array); 

这三行可以用

file_get_contents("http://www.php.net");

代替。除非你想留着$lines_array用作逐行分析。
php爱好者站 http://www.phpfans.net 文章|教程|下载|源码|论坛.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载