• PHP自动识别采集何意网址文章正文内容


    在做PHP采集内容时,用过querylist采集组件,但是这个插件采集页面内容时,都必须要写个采集选择器。这样比较麻烦,每个文章页面都必须指定一条采集规则 。就开始着手找一个插件可以能自动识别任意文章url正文内容并采集的,发现有一个插件,是采集内容标签给每个标签拆开后打分来分析出正文内容的,下面给大家展示实现的过程及代码。

    先看截图:
    在这里插入图片描述
    采集代码

    try{
                $ql = QueryList::get($url);
            }catch(RequestException $e){
                //print_r($e->getRequest());
                return json(['status'=>false,'msg'=>'Http Error:服务器错误,url不存在']);die;
            }
            //queryData 方法等同于  query()->getData()->all()
            //$query = $ql->rules($rules)->queryData();
    
            $title_rule = json_decode(htmlspecialchars_decode($title_rule),true);
            $content_rule = json_decode(htmlspecialchars_decode($content_rule),true);
            if($thumb_rule)
            $thumb_rule = json_decode(htmlspecialchars_decode($thumb_rule),true);
            $photos_range = htmlspecialchars_decode($photos_range);
    
    
            if(is_array($content_rule)&&is_array($title_rule))
            {
                $rules = [
                    'title' => $title_rule,
                    'seo_title' => ['title','text'],
                    'keywords' => ['meta[name=keywords]','content'],
                    'description' => ['meta[name=description]','content'],
                    'content' => $content_rule,
                    'thumb' => $thumb_rule
                ];
    
                if(empty($thumb_rule))
                    unset($rules['thumb']);
    
            }
            else
            {
                $rules = [
                    'title' => ['h1','text'],
                    'seo_title' => ['title','text'],
                    'keywords' => ['meta[name=keywords]','content'],
                    'description' => ['meta[name=description]','content'],
                    'content' => [$content_rule,'html','-a -ul -li -.group-post-list'],
                    'thumb' => [$thumb_rule,'src']
                ];
            }
    
            $query =  $ql->rules($rules)->queryData();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    这些写对于每个页面都要定好规则,比较麻烦有没有一种组件可以任意网址自动识别采集正文内容的,
    先看效果
    在这里插入图片描述
    只需要输入一个文章的网站,自动识别正文内容并采集
    主要用的一个插件readability,git地址: https://github.com/andreskrey/readability.php
    代码:

    $html = file_get_contents($url);
    $readability = new Readability(new Configuration());
    $readability->parse($html);
    
    
    $data['title'] = $readability->getTitle();
    $data['seo_title'] = $readability->getTitle();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    golang sync.Map 在函数传参时默认是值传递
    【力扣每日一题】1175. 质数排列
    jenkins 拉取git仓库报错: stderr: fatal: not in a git directory
    华为OD机考:固定窗口的最大和、简易内存池的分配
    解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct
    Reactor反应堆:EventLoop的执行流程
    webpack5零基础入门-10babel的使用
    Docker的数据管理(数据卷,容器互联)
    工业级路由器如何异地组网及其作用
    学习Java的第六天
  • 原文地址:https://blog.csdn.net/tianlu930/article/details/133221872