PHP 使用 QueryList 轻松实现一个百度网盘资源搜索引擎 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jaeger
V2EX    PHP

PHP 使用 QueryList 轻松实现一个百度网盘资源搜索引擎

  •  
  •   Jaeger 2017-10-07 11:25:43 +08:00 4552 次点击
    这是一个创建于 3016 天前的主题,其中的信息可能已经有所发展或是发生改变。

    QueryList 使用 jQuery 的方式来做采集,拥有丰富的插件。

    下面来演示QueryList使用Baidu 搜索引擎插件轻松实现站内搜索。

    安装

    使用 Composer 安装:

    • 安装 QueryList
    compose require jaeger/querylist 

    GitHub: https://github.com/jae-jae/QueryList

    • 安装 Baidu 搜索引擎插件
    composer require jaeger/querylist-rule-baidu 

    GitHub: https://github.com/jae-jae/QueryList-PhantomJS

    插件 API

    • Baidu baidu($pageNumber = 10):获取百度搜索引擎

    class Baidu:

    • Baidu search($keyword):设置搜索关键词
    • Baidu **setHttpOpt(array $httpOpt = [])**:设置 HTTP 选项,查看: GuzzleHttp options
    • int getCount():获取搜索结果总条数
    • int getCountPage():获取搜索结果总页数
    • Collection page($page = 1,$realURL = false):获取搜索结果

    使用

    • 实现一个百度网盘资源搜索引擎:
    <?php require 'vendor/autoload.php'; use QL\QueryList; use QL\Ext\Baidu; $ql = QueryList::use(Baidu::class); // 搜索百度网盘网站,包含‘百度’关键词的资源 $searcher = $ql->baidu()->search('site:pan.baidu.com 百度'); // 获取第一页数据,并获取真实 URL 连接地址 $data = $searcher->page(1,true); print_r($data->all()); 

    抓取结果:

    Array ( [0] => Array ( [title] => 百度网盘_享你所想 [link] => http://pan.baidu.com/ ) [1] => Array ( [title] => 百度网盘 客户端下载 [link] => https://pan.baidu.com/download ) [2] => Array ( [title] => 百度网盘-开放平台 [link] => https://pan.baidu.com/platform/read ) // .... ) 
    • 更多用法
    $baidu = $ql->baidu(15); // 设置每页搜索 15 条结果 $searcher = $baidu->search('QueryList'); $count = $searcher->getCount(); // 获取搜索结果总条数 $data = $searcher->page(1); $data = $searcher->page(2); $searcher = $baidu->search('php'); $countPage = $searcher->getCountPage(); // 获取搜索结果总页数 for ($page = 1; $page <= $countPage; $page++) { $data = $searcher->page($page); } $data = $searcher->setHttpOpt([ // 设置 http 代理 'proxy' => 'http://222.141.11.17:8118', // Set the timeout time in seconds 'timeout' => 30, ])->page(1); 

    Google 搜索引擎插件

    当然除了 Baidu 搜索引擎插件,QueryList 也有 Google 搜索引擎插件,也可以实现同样的功能。

    文档: https://doc.querylist.cc/site/index/doc/43 GitHub: https://github.com/jae-jae/QueryList-Rule-Google

    11 条回复    2017-10-30 03:55:11 +08:00
    chnyang
        1
    chnyang  
       2017-10-07 11:33:52 +08:00 via Android
    支持支持。
    vovov
        2
    vovov  
       2017-10-07 11:36:35 +08:00 via Android
    很好的插件,支持下!
    koodai
        3
    koodai  
       2017-10-07 21:55:13 +08:00
    确实挺好的,不过我一直比较抵触使用 composer,平时维护一个单脚本足够方便,引入包管理器反而把问题复杂化了。

    “ 如果你的 PHP 版本还停留在 PHP5,或者不会使用 Composer,你可以选择使用 QueryList3 ”

    QL 和 QL3 有区别吗?
    GGGG430
        4
    GGGG430  
       2017-10-08 17:11:25 +08:00
    Jaeger
        5
    Jaeger  
    OP
       2017-10-08 22:22:48 +08:00
    @koodai #3 QL3 是上一个大版本,目前是 QL4
    Jaeger
        6
    Jaeger  
    OP
       2017-10-08 22:41:10 +08:00
    @GGGG430 #4
    可以理解为 QueryList 是 Gotte 的超集!
    QueryList 除了拥有与 Gotte 类似的 DOM 操作能力和内置强大 GuzzleHttp,还有:
    1.拥有比 Goutte 更全的选择器,如:伪选择器`:eq(0)`
    2.拥有通用的列表采集方案
    3.拥有乱码解决能力
    4.拥有内容过滤功能
    5.可扩展,拥有丰富的插件
    6.API 简洁易用

    目前已有的插件如:多线程采集插件、抓取动态 Javascript 渲染页面的 PhantomJS 插件等
    GGGG430
        7
    GGGG430  
       2017-10-09 00:35:46 +08:00
    @Jaeger 多谢回答, 插件不错
    YMB
        8
    YMB  
       2017-10-09 09:30:12 +08:00
    mark
    moke
        9
    moke  
       2017-10-09 09:36:19 +08:00
    百度都不支持盘内搜索,
    2ME
        10
    2ME  
       2017-10-09 11:38:15 +08:00
    @Jaeger 大佬 3.0Multi 并发采集后 如果想在 success 的 function 里接着当前线程下载图片怎么操作.. 直接调用下载的话下载图片的时候会有阻塞 现在处理都是把图片链接存到最后再开一个 Multi 去专门下载之前的图片 = =
    kwan
        11
    kwan  
       2017-10-30 03:55:11 +08:00
    @koodai 你也说了,单一脚本的情况之下,如果实际情况是 A 依赖于 B,而 B 又依赖于 C,composer 关键是帮你解决了依赖,就好像 Linux 的包管理器 rpm、apt 那样
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2439 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 01:24 PVG 09:24 LAX 17:24 JFK 20:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86