<?php
/*
 * Created on 2010-12-10
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 include './config/config.php';$mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWD,DB_NAME);
$mysqli->set_charset("gbk");if(mysqli_connect_errno()){
printf("Connect failed %s",mysqli_connect_error());
exit();
}$sql = 'select url from wb_url';
$result = $mysqli->query($sql);if($result && $mysqli->affected_rows){
//echo 'sdf';
while($row = $result->fetch_object()){
// var_dump($row->url);
// echo 'aaaaaaaaaaa';
//开始设置抓取步骤
$url = $row->url;
$file = fopen("$url","r");
//打开具体地址 r 代表 以只读方式打开
if(!$file){
echo '打开失败';
exit;
}
if(!feof($file)){
$line = fgets($file,1024);
//echo 'sd';
if (eregi ("<title>(.*)</title>", $line, $out)) {
var_dump($out);
echo 'dfdfg';
echo "".$out[1].""; break;
}
}
}//while
}//if
$mysqli->close();
?>

解决方案 »

  1.   

    if (eregi ("<title>(.*)</title>", $line, $out)) {
    var_dump($out);
    echo 'dfdfg';
    echo "".$out[1].""; break;
    }
    这里不执行 是什么原因 谢谢大家啦!
      

  2.   

    推荐你使用preg_match ···
    因为ereg类的方法在最新的php版本里面已经取消
      

  3.   

    preg_match ("|<title>(.*?)</title>|ims", $line, $out
      

  4.   

    $pattern = "/\<\\w\>(.*)\<\/\\w\>/ims";改了 还是不执行  
      

  5.   

    $pattern ="/\<(.*)\>(.*)<\/(.*)>/";还是不可以
      

  6.   


    $line = fgets($file,1024);
    //$pattern = "/\<\\w\>(.*)\<\/\\w\>/ims";
    $pattern = "|<title>(.*)<\/title>|ims";if (preg_match($pattern, $line, $out)) {
    echo var_dump($out);
    echo 'dfdfg';
    // echo "".$out[1]."";
    //如果成功  就将从指定网站的抓取的数据 写入数据库
    break;
    }
    }//!feof($file)这样还不行  是什么原因
      

  7.   

    你不能上一些具体的代码·
    比如要匹配的哪些东西 好给你写正则啊···你说是不是?$pattern = "|<title>(.*)</title>|ims";
    是没问题的··
      

  8.   

    哈哈哈  我按照这个调了一下  $pattern = "|<title>(.*)<\/title>|ims";就可以啦!!这样是抓文章的标题  
    想要抓取  文章的内容 怎么写啊!!!   说一下 步骤也行啊!!!  万分感谢、、、、
      

  9.   


    header("Content-type: text/html; charset=utf-8"); 
    $str = file_get_contents("http://www.163.com");
    $pattern = "|<title>(.*?)<\/title>|ims";
    if (!preg_match_all($pattern, $str, $out)) {
    exit("匹配错误");
    }else{
    $out = $out[1][0];
    $out = iconv('gb2312', 'utf-8', $out);
    echo $out;
    }
      

  10.   

    当你获取到标题 当然你也可以获取到这篇文章的url既然有了url 你就可以获取到文章页面 使用正则表达式匹配出来内容 ··别无他法!
      

  11.   

    输入:http://tieba.baidu.com/
    我抓取该网页中的 href="http://tieba.baidu.com/f?kz=931019809 和 金庸影视剧中最美百位美女明星<ul class="order">
    <li><span class="num color">1</span><a target="_blank" href="http://tieba.baidu.com/f?kz=931019809">金庸影视剧中最美百位美女明星</a></li>
    <li><span class="num color">2</span><a target="_blank" href="http://tieba.baidu.com/f?kz=927639142">夜场生活:酸甜苦辣自己体会</a></li>
    <li><span class="num color">3</span><a target="_blank" href="http://tieba.baidu.com/f?kz=936381484">高中女生小米讲述在美国的生活</a></li>
    <li><span class="num">4</span><a target="_blank" href="http://tieba.baidu.com/f?kz=935954137">Dota悬疑志之《消失的冰女》</a></li>
    <li><span class="num">5</span><a target="_blank" href="http://tieba.baidu.com/f?kz=930201383">我那造孽的十五次游戏“婚姻”</a></li>
    <li><span class="num">6</span><a target="_blank" href="http://tieba.baidu.com/f?kz=937865853">讲述中国108个太监的风云人生</a></li>
    <li><span class="num">7</span><a target="_blank" href="http://tieba.baidu.com/f?kz=932905377">90后图文:活着,在这孤独城市</a></li>
    <li><span class="num">8</span><a target="_blank" href="http://tieba.baidu.com/f?kz=949269489">留学新西兰,细数那些新西兰妹子</a></li>
    </ul>$line  是从数据库中读出:http://tieba.baidu.com/
    $patternurl ="|<ul><li>(.*)(href=http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?)(.*)<\/li><\/ul>|ims";
    if(preg_match($patternurl,$line,$out)){
    var_dump($out);
    echo 'aaaaaaaaa';
    fclose($file);
    }