视频教程源码 84讲 - 采集程序

本文介绍了一个使用PHP进行网页内容抓取并将其存储到数据库的简单应用实例。该实例通过正则表达式从指定URL中提取新闻标题及链接,然后将这些信息保存到临时表中,接着进一步抓取具体内容并存入最终的新闻表。整个过程涉及到了基本的HTTP请求处理、正则匹配及MySQL数据库操作。

一:数据库

 

-- 数据库: `caiji`
--

-- --------------------------------------------------------

--
-- 表的结构 `news`
--

CREATE TABLE `news` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(50) collate gb2312_bin NOT NULL,
  `content` text collate gb2312_bin NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin AUTO_INCREMENT=58 ;

-- --------------------------------------------------------

--
-- 表的结构 `tmp_url`
--

CREATE TABLE `tmp_url` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(100) NOT NULL,
  `url` varchar(150) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=166 ;

 

二:连接数据库文件conn.php

 

  /*
  author: www.php100.com 视频教程源码 84讲
  */
  mysql_connect("localhost","root","hongwei");
  mysql_select_db("caiji");
  mysql_query("set names 'GBK'");

?>

 

三:列表文件ls.php

 

  /*
  author: www.php100.com 视频教程源码 84讲
  */
include_once("conn.php");


  if($_GET[id]<=60 && $_GET[id]){
  $con=file_get_contents("http://it.sohu.com/7/1002/17/column203661721_32".$_GET[id].".shtml");

  $preg = "#

·(.*)#iUs";

  preg_match_all($preg,$con,$arr);

   foreach($arr[1] as $id=>$v){

   $sql="INSERT INTO `tmp_url` (`id`, `title`, `url`) VALUES (NULL, '".$arr[2][$id]."', '".$v."');";
   mysql_query($sql);

     }
     $_GET[id]++;
     echo "正在采集列表....".$_GET[id];
     echo "";
  }else{
 
     echo "采集结束";
  }
?>

 

四:展示页面文件vi.php

 

  /*
  author: www.php100.com 视频教程源码 84讲
  */

   include_once("conn.php");

  $gid =(int)$_GET[id];
  
   $sql="select * from tmp_url where id='$gid'";
   $q=mysql_query($sql);
   $row = mysql_fetch_array($q);
  
   $con=file_get_contents($row[url]);
    echo $titles="".zz("#(.*)#iUs",$con)."";

    echo $conts=zz("# (.*) #iUs",$con);
 
    $intosql="INSERT INTO `news` (`id`, `title`, `content`) VALUES (NULL, '$titles', '$conts');";
    mysql_query($intosql);


    //============================

   $sql2="select * from tmp_url where id>'$gid' order by id asc limit 1";
   $q2=mysql_query($sql2);
   $row2 = mysql_fetch_array($q2);
    echo $row2[0].$row2[1]."
";
    if($row2[0]){
    echo "";
    }

 
  function zz($preg,$con,$num=1){
  preg_match($preg,$con,$arr);
   return $arr[$num];
  }
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值