首页 » 产品日记 » 正文

用QueryList写个小爬虫

最近项目(TP6)中要做一些数据采集,找到了QueryList这个采集框架,还蛮容易上手的,主要是把采集到的数据,在入库之前做了下处理,官方文档中还有更高级的玩法(见官方文档:http://www.querylist.cc/docs/guide/v4/processing-data),直接在规则部分,通过过滤器来处理数据,记录一下:

public function getdata(){

      $url = 'https://www.xx.com';
        //规则
        $rules = [
            'title'=>['.title','text'],
            'author'=>['a.author_url','text'],
            'url'=>['a.pwrap','href']
        ];

        //切片选择器,主要用于遍历列表中最小单元
        $range = '.item';

        //构造头部信息发送请求获取数据
        $db = QueryList::rules($rules)->range($range)->get($url,null,
                [
                    'headers'=>[
                        'User-Agent'=>'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
                        'Accept-Encoding' => 'gzip, deflate, br',
                    ]
                ]
            )->query()->getData();

        //用map方法遍历处理数据,替换多余的内容
        $result = $db->map(function ($item){
            $item['title'] = str_replace('NFT最新消息: ','',$item['title']);
            $item['author'] = str_replace('作者: ','',$item['author']);
            return $item;
        })->all();

            //批量添加到数据库
//            $addNews = new Pd;
//            $addNews->saveAll($result);

        return json($result);

    }

发表评论