range()在一个元素上有双class name或者说一个以上的class name就无法获得数据
已经用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论