PHP 抓取网页数据

<?php

namespace Jg\Controller;

use Module\Db\M;

class PaChongController extends \Jg\Common\BaseController {
    public function index()
    {
        $url = 'https://my.oschina.net/u/3637633/blog/1629738';
        $co = $this->get_info($url);
        $co = str_replace(["<br>","\t","\n","\r"], '', $co);
        //dump($co);
        $title_preg = '#<h2 class="header">(.*)<div class="ui teal#';
        preg_match_all($title_preg, $co, $a);
        //dump(trim($a[1][0]));
        $content_preg = '#</p>                                        </div> (.*)<div class="ad-wrap" style="margin-top: 12px;">#';
        preg_match_all($content_preg, $co, $b);
        //dump(trim($b[1][0]));
        
        $data = [
                'title' => trim($a[1][0]),
                'content' => trim($b[1][0]),
                'url' =>$url
        ];
//         M::link();
//         M::table('article')->add($data);
        echo $url;
    }
    
    public function getUrls(){
        set_time_limit(0);
        $url = 'https://www.oschina.net/search?scope=blog&q=CSS3';
        $tag = 'CSS3';
        $co = $this->get_info($url);
        //dump($co);
        $preg = '#<div class="meta">(.*)</div>#';
        preg_match_all($preg, $co, $a);
        dump($a[1]);
//         foreach ($a[1] as $v) {
//             $this->insertTable($v, $tag);
//         }
//         echo '成功';
    }
    
    protected function insertTable($url, $tag) 
    {
        $co = $this->get_info($url);
        $co = str_replace(["<br>","\t","\n","\r"], '', $co);
        $title_preg = '#<h2 class="header">(.*)<div class="ui teal#';
        preg_match_all($title_preg, $co, $a);
        $content_preg = '#</p>                                        </div> (.*)<div class="ad-wrap" style="margin-top: 12px;">#';
        preg_match_all($content_preg, $co, $b);
        $data = [
                'title' => trim($a[1][0]),
                'content' => trim($b[1][0]),
                'url' =>$url,
                'tag' => $tag
        ];
        M::link();
        $i = M::table('article')->where('url', $url)->find();
        if(!$i) {
            M::table('article')->add($data);
        }
    }
    
    protected function get_info($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        $content=curl_exec($ch);
        curl_close($ch);
        return $content;
    }
}

转载于:https://my.oschina.net/u/4159874/blog/3085052

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值