php 采集

<?php  
header('content-type:text/html;charset=utf-8');
set_time_limit(0);
$url = "http://www.sina.com.cn/";
$con = file_get_contents($url);
$reg = '#<ul class="list-a news_top">.*<div tab-type="tab-cont" id="SI_IP_Tab_Cont_1" class="mod06-cont" style="display:none;" data-sudaclick="blk_topcity_1" blkclick="auto_nav" blktitle="地方站">#isU';
preg_match($reg,$con,$rs);
$reg2 = '#<li><a target="_blank" href="(.*)">(.*)</a>#isU';
preg_match_all($reg2,$rs[0],$rrs);
//var_dump($rrs);die;
$title = $rrs[2];

$url = $rrs[1];

foreach($title as $key=>$v){
  $pdo=new PDO('mysql:host=127.0.0.1;dbname=caiji','root','root');
  $sqll="set names utf8";
  $pdo->exec($sqll);
    $sql="insert into sina_news values(null,'$v','$url[$key]')";
    $re=$pdo->exec($sql);
}
if($re){
    echo "添加成功";
}

今天复习了一下php的采集,又总结回顾了一下

下面是采集新浪首页的新闻模块的标题和超链接路径


caiji.php

<?php  
header('content-type:text/html;charset=utf-8');
set_time_limit(0);
$url = "http://www.sina.com.cn/";
$con = file_get_contents($url);
$reg = '#<ul class="list-a news_top">.*<div tab-type="tab-cont" id="SI_IP_Tab_Cont_1" class="mod06-cont" style="display:none;" data-sudaclick="blk_topcity_1" blkclick="auto_nav" blktitle="地方站">#isU';
preg_match($reg,$con,$rs);
$reg2 = '#<li><a target="_blank" href="(.*)">(.*)</a>#isU';
preg_match_all($reg2,$rs[0],$rrs);
//var_dump($rrs);die;
$title = $rrs[2];

$url = $rrs[1];

foreach($title as $key=>$v){
  $pdo=new PDO('mysql:host=127.0.0.1;dbname=caiji','root','root');
  $sqll="set names utf8";
  $pdo->exec($sqll);
    $sql="insert into sina_news values(null,'$v','$url[$key]')";
    $re=$pdo->exec($sql);
}
if($re){
    echo "添加成功";
}


这样就会把所需要采集的内容加入到数据库中了。

采集的几个重要函数:

set_time_limit(0);    //设置php执行的时间
preg_match();         //preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。          

提示

preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数。

在说一下PHP 正则表达式 /i /s /U 等尾缀的含义

i 匹配大小写

s 模式中的圆点元字符(.)匹配所有的字符,包括换行符

U 贪婪模式,最 大限度匹配 如:/a[\w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abce

注:上面是采用file_get_contents() 函数采集,接下来会讲解curl , snoop函数采集。


使用curl获取远程网站内容

// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $con = curl_exec($ch);

//可以使用curl_getinfo()函数获取CURL请求输出的相关信息

 $info = curl_getinfo($ch);

 if($con === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);

//print_r($info);die;
echo $con;die;

snoop获取远程网站内容


include("./Snoopy.class.php");
$url = "http://www.sina.com.cn/";
$snoopy = new Snoopy;
$snoopy->fetch($url); 		//获取所有内容
echo $snoopy->results;die;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值