range()在一个元素上有双class name或者说一个以上的class name就无法获得数据

发布于 2022-09-11 20:20:45 字数 1059 浏览 17 评论 0

已经用querylist采集了几个网站了,非常不错,这是第一次遇到双class name无法采集到item的。

目标网址是一个discuz程序 ,/portal.php?mod=list&catid=1

包裹item的元素是:<div class="bm_c xls"><dl>......</dl></div>

我尝试了多个range,我认为最贴切的2个range在下面的代码里,执行结果都是空的[]

//采集规则
        $reg  = [
            'detail_link' => ['dd>span>a', 'href'],
            //采集文章标题
            'title'       => ['dt>div>a>.img', 'alt'],
            'image'       => ['dt>div>a>.img', 'src'],
            'brief'       => ['dd>.span:eq(1)', 'text', '-a -.content_copyright -script'],
        ];
        $rang = '.bm_c:eq(0)';  //现在使用的
//        $rang = '.xls>dl';  //这是我最初使用的

        try {
//            echo QueryList::get($url)->getHtml();  // worked

            $data = QueryList::get($url, [
                'timeout' => 30,
            ], $this->getRobotHeader())->rules($reg)->range($rang)->query()->getData()->all();
            dd($data);  // show empty []

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文