php页面采集简单示例

Eddy 发布于2012-12-9 10:8:6 分类: 网站相关 已浏览loading 网友评论0条 我要评论

熟悉下正则表达式的运用

<?php
/*
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 */
header('Content-Type:text/html;charset=utf-8');
date_default_timezone_set('PRC');
require './Snoopy.class.php';
if(isset($_POST['submit']) && isset($_POST['url'])){
    $url = $_POST['url'];
    //验证url合法性
    if(!preg_match('/^https?:\/\/[a-zA-Z0-9\-\.]+/i', $url)){
        echo '<p><font color="red">执行失败!URL不合法!</font></p>';
        exit();
        }
    $snoopy = new Snoopy;
    $snoopy->fetchlinks($url);
    $myurl = array();
    foreach($snoopy->results as $v){
        if(strpos($v,'qiuzhitie')){
            $myurl[]=$v;
        }
    }

    $snoopy = null;

    $snoopy = new Snoopy;
    for($i=0;$i<4;++$i){
        unset($myurl[$i]);
    }

    $j=0;
    foreach($myurl as $v){
        $snoopy->fetch($v);
        echo '地址:',$v,'<br />';
        preg_match('/(?<=<h1>).*(?=<\/h1>)/',$snoopy->results,$matches);
        echo '标题:',$matches[0],'<br />';
        preg_match('/(?<="tel STYLE1">).*(?=<\/strong>)/',$snoopy->results,$matches);
        echo '电话:',$matches[0],'<br />';
        preg_match('/(?<=p" >)\s*.*\s*(?=<\/p>)/',$snoopy->results,$matches);
        echo '详细信息:',trim($matches[0]),'<br />';
        echo '<hr/>';

        $j++;
        if($j==10){
            exit('在此只采集10条做演示');
        }
    }
}
?>

<html>
<head>
</head>
<body>
<h4>请输入待抓取页面url</h4>
<h4><font color="blue">测试地址:http://bj.h2h.cn/f2660gp1.html</font></h4>
<form method="post">
<input type="text" name="url" size="40" /> <input type="submit" name="submit" value="开始抓取" />
</form>
</body>
</html>

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/webdesign/859.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言