Thinkphp 实现采集网站数据

例如我要采集这个url里的所有美国电影的信息,

http://list.youku.com/category/show/c_96_a_%E7%BE%8E%E5%9B%BD_s_1_d_1_p_3.html
image.png
public function index()
        {
            $url ='https://list.youku.com/category/show/c_96_a_%E7%BE%8E%E5%9B%BD_s_1_d_1_p_3.html';
            $data = $this->get($url);
            // 匹配电影所在位置
            $list_preg = '/<li class="yk-col4 mr1">.+<\/li>/Us';
            // 匹配img标签上的src和alt
            $img_preg = '/<img class="quic" _src="(.*)" src="(.*)" alt="(.*)" \/>/U';
            //匹配电影的url
            $video_preg = '/<a href="(.*)" title="(.*)" target="(.*)"><\/a>/U';
            //把所有的li存到$list里,$list是个二维数组
            preg_match_all($list_preg, $data, $list);

           foreach ($list[0] as $k => $v) {   //这里$v就是每一个li标签
                //获取图片及电影名称
                 /*preg_match($img_preg,$v,$img);  //把匹配到的图片的信息存到$img里
                 var_dump($img);*/

                //获取电影地址
                /* preg_match($video_preg,$v,$video);  //把匹配到的电影的信息存到$video里
                  var_dump($video);*/


                preg_match($img_preg, $v, $img);
                preg_match($video_preg, $v, $video);
                echo $img[0] . '<a href="' . $video[1] . '">' . $video[2] . '</a>';
           }
        }


       public function get($url)
        {
          $curl = curl_init();
          // 配置curl中的http协议->可配置的荐可以查PHP手册中的curl_
          curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($curl, CURLOPT_HEADER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
          // 执行这个请求
          return curl_exec($curl);
        }

最终效果


image.png

如果需要把图片拷贝到硬盘上,则在foreach循环里加上以下代码:

          $imgData = $this->get($img[1]);
           // 把图片文件写到硬盘上【下载】
            // 因为操作系统是GBK的,所以要把UTF8转成GBK
          is_dir('./youkuimg/') ? '': mkdir('./youkuimg/');
          file_put_contents('./youkuimg/'.mb_convert_encoding($img[3], 'gbk', 'utf-8').'.jpg', $imgData);

完整代码

 public function index()
        {
            // 生成一个curl对象
           // $url = 'http://list.youku.com/category/show/c_96_a_%E7%BE%8E%E5%9B%BD_s_1_d_1_p_3.html';
            $url ='https://list.youku.com/category/show/c_96_a_%E7%BE%8E%E5%9B%BD_s_1_d_1_p_3.html';
            $data = $this->get($url);
            // 匹配电影所在位置
            $list_preg = '/<li class="yk-col4 mr1">.+<\/li>/Us';
            // 匹配img标签上的src和alt
            $img_preg = '/<img class="quic" _src="(.*)" src="(.*)" alt="(.*)" \/>/U';
            //匹配电影的url
            $video_preg = '/<a href="(.*)" title="(.*)" target="(.*)"><\/a>/U';
            //把所有的li存到$list里,$list是个二维数组
            preg_match_all($list_preg, $data, $list);

           foreach ($list[0] as $k => $v) {   //这里$v就是每一个li标签
                //获取图片及电影名称
                 /*preg_match($img_preg,$v,$img);  //把匹配到的图片的信息存到$img里
                 var_dump($img);*/

                //获取电影地址
                /* preg_match($video_preg,$v,$video);  //把匹配到的电影的信息存到$video里
                  var_dump($video);*/


                preg_match($img_preg, $v, $img);
                preg_match($video_preg, $v, $video);
                echo $img[0] . '<a href="' . $video[1] . '">' . $video[2] . '</a>';
                 $imgData = $this->get($img[1]);
               // 把图片文件写到硬盘上【下载】
                // 因为操作系统是GBK的,所以要把UTF8转成GBK
              is_dir('./youkuimg/') ? '': mkdir('./youkuimg/');
              file_put_contents('./youkuimg/'.mb_convert_encoding($img[3], 'gbk', 'utf-8').'.jpg', $imgData);
           }
        }


       public function get($url)
        {
          $curl = curl_init();
          // 配置curl中的http协议->可配置的荐可以查PHP手册中的curl_
          curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($curl, CURLOPT_HEADER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
          // 执行这个请求
          return curl_exec($curl);
        }

效果如下:在当前目录下的youkuimg目录下就会有下载好的图片。


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么叫采集? 就是使用PHP程序,把其他网站中的信息抓取到我们自己的数据库中、网站中。 PHP制作采集的技术: 从...
    亚讯阅读 1,028评论 0 1
  • 5 分享内容到你的网站 上一章中,你在网站中构建了用户注册和认证。你学会了如何为用户创建自定义的个人资料模型,并添...
    lakerszhy阅读 1,681评论 5 16
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,315评论 0 3
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,601评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,225评论 4 8