贾庆子
  • 1
  • 新人请关照

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;
}
阅读 1.4k
评论 更新于 2018-01-18
    4 个回答
    Jaeger
    • 451

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

    评论 赞赏 2018-01-24
      岩路
      • 2
      • 新人请关照

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

      评论 赞赏 2018-04-05

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

        评论 赞赏 2019-01-29
          开拓者博客
          • 1
          • 新人请关照

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

              /**
               * URL请求
               * @param $url
               * @return string
               */
              private function _request($url)
              {
                  $result = file_get_contents($url);
                  return $result;
              }
          评论 赞赏 2019-02-23
            撰写回答

            登录后参与交流、获取后续更新提醒