zoukankan      html  css  js  c++  java
  • php网页采集功能

    我要获取这里的所有列表名称和列表url地址。
    phpquery有多种初始化的方法,这里我用:

    下载:http://code.google.com/p/phpquery/downloads/list 
    <?php

    //初始化phpquery对象
    $file = file_get_contents("
    http://lmzj26.blog.51cto.com/index.html");
    $dom = phpQuery::newDocument($file);

    //这样可以得到网页标题
    $title = pq("head > title")->text(); 
    //获取网页标题
    $title = $dom['head > title']->text();

    //开始获取列表
    //可以看到样式为.con这个div 
    $div = pq('.con')->find('a');           //把这个div里面的所有a标签作为对象存入$div    

    foreach($div as $d){       //循环,这里的$d即表示的是一个a对象了
    $url = pq($d)->attr('href');   //获取href属性
    $t = pq($d)->text();             //获取a标签里面的文本
    $al[$url] = $t;           //存入数组,循环,采集,存入数据库
    }

    例二。
    guoxue.baidu.com/page/caabbead/0.html
    /**
    这里我们要做的是获取这里的文章作者和内容,即关关雎鸠.....
    分析得出作者是在 <div class="con">  里面的p标签里面的。而内容则是被包含
    在这个div里面的第二个子div,第一与第三个div是上下页。
    */

    //创建对象
    $file2 = file_get_contents("
    http://lmzj26.blog.51cto.com/index.html ");
    $dom = phpQuery::newDocument($file2);

    //获取了作者那一块信息。
    $writer = pq('.con')->find('p')->text();
    //echo $writer;
    //$writer = getWriter($writer);   //这是我写的获取作者的一个函数,很简单按:分割就得到了

    $cont = pq('.con')->find('div');  //得到样式.con的div里面所有div对象
    $content = array();
    $content['writer'] = $writer;

    $i =0;
    foreach($cont as $arch){         //循环得到单个的div对象
    if($i ==1){                         //文章div是第二个
    $content['txt'] = pq($arch)->html();   //这里就得到文章了

    }    
    $i++;
    }
    //print_r($content);

    ?>


    这样就完成了。不过采集需要注意的是编码问题。如不注意则有些生僻字则获取不到。
    如上网页的编码是gb2312,而我的是utf-8则需要转码一下。

    $content['txt']  = iconv('gb2312','utf-8',$content['txt'] );   //但是这样还是有很多字符丢失了。。搞了半天才明白。。这有关字符大小的关系。gb2312<gbk<gb18030
    把gb2312改为gbk就好了。。

    $content['txt']  = iconv('gbk','utf-8',$content['txt'] );
     
    做采集功能,原来这么简单
  • 相关阅读:
    ThinkPHP3.2 整合支付宝RSA加密方式
    代码风格规范
    Mac下安装composer
    MAC 下安装RabbitMQ
    Redis配置
    git 分支
    PHP常用数组操作方法汇总
    php 不用第三个变量 交换两个变量的值汇总
    PHP配置错误信息回报的等级
    Apache同一个IP上配置多域名
  • 原文地址:https://www.cnblogs.com/weaver1/p/2475206.html
Copyright © 2011-2022 走看看