开发者社区> 问答> 正文

递归多级采集的一个问题

递归多级采集的一个问题

想把路径拼全,使用querylist如何拼呢?? `

  • favicon.ico
  • banner-ads
    • ad01.png
    • ad02.png ad03.png ad04.png ad06.jpg
  • logos
    • logo-light.png
    • logo.png
  • news
    • category
      • category1.png
      • category2.png category3.png category4.png category5.png
    • fashion
      • image1.png
      • image2.png image3.png image4.png
    • food
      • food01.png
    • health
      • image1.png
      • image2.png
    • lifestyle
      • image1.jpg
      • image2.png image3.png image4.png
    • news-details
      • large-image.jpg
      • left-image.jpg
    • sports
      • sports02.png
      • sports03.png
    • tech
      • image5.png
      • tech02.png tech1.png
    • travel
      • image1.png
      • image2.png image3.png
    • video
      • video1.jpg
      • video2.jpg video3.jpg video4.jpg author.png user1.png user2.png controls.png
    ` ![image.png](https://ucc.alicdn.com/pic/developer-ecology/6ceca45ee5df4d30a8c705f14daf2d33.png) 最终拼成如下 favicon.ico banner-ads/ad01.png news/category/category1.png .... 无限级的那种。看官方有个简单例子但有点区别。一直没有搞定。哪位大神指教一下??

展开
收起
问问小秘 2020-01-09 16:08:35 600 0
1 条回答
写回答
取消 提交回答
  • $html =<<<STR

    • xxx

      item1
      item2
    • xxx2

      item12
      item22
    STR;

        $data = QueryList::html($html)->rules(array(
                'title' => array('h3','text'),
                'list' => array('.list','html')
            ))->range('#demo li')->queryData(function($item) {
                // 注意这里的QueryList对象与上面的QueryList对象是同一个对象
                // 所以这里要重置range()参数,否则会共用前面的range()参数,导致出现采集不到结果的诡异现象
                $item['list'] = QueryList::html($item['list'])->rules(array(
                         'item' => array('.item','text')
                    ))->range('')->queryData();
    
                // 拼接item !!!
                $item['list'] = array_map(function($value) use( $item )  {
                    $value['item'] = $item['title']. "/" .$value['item']; 
                    return $value;
                }, $item['list']);
    
    
                return $item;
        });
        print_r($data);
    
    2020-01-09 16:11:42
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
探究高性能的海量节点树 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载