querylist 采集成功一次失败一次交替出现

第一次能采集到,第二次报错 未定义数组下标: 0
第三次又可以采集,这样交替出现问题。
代码如下,log出来没发现什么问题。

public function getOneTitle($content_html){
    //采集规则
    $content_rules = [
        'title' => array('title', 'text')  //文章标题
    ];
    $content_ql = $this->ql->html($content_html)->rules($content_rules)->query();
    $query = $content_ql->getData();
    $data = $query->all();
    if(empty($query->all()[0])){
        Log::write('详情1>>>'.$content_html."<<<<<1详情end");
        $html2 = $content_ql->getHtml();
        Log::write('详情2>>>'.$html2."<<<<<2详情end");
        var_dump($data);
    }
    $content = $data[0]['title'];

    return $content;
}
阅读 4k
4 个回答

第一次和第二次采集的是同样的内容吗?把$query->all()打印出来看看, 第二次应该是没有选择到内容

新手上路,请多包涵

这个问题,我也出现过,用getHtml是查获取是正常,但将获取 内容在ql->html()中加载,有时加载得上,有时会加载不到。非常奇怪的问题。如果只是看程序,这么几行,似乎没有问题。应该是querylist设计上的问题,后面将处理写为插件方式进行调用,就没有再出现过问题了。

请问楼主怎么解决的?
我现在也遇到了这个问题,采集一个页面的第1页没有问题,第2、3...页就全部失败,从第2页开始采集也没问题。
getHtml()获取到的html没问题,但是getData那里获取的的数据为空

新手上路,请多包涵

querylist.php
可以尝试修改为这样

    /**
     * URL请求
     * @param $url
     * @return string
     */
    private function _request($url)
    {
        $result = file_get_contents($url);
        return $result;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进