Jaeger
V2EX  ›  PHP

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

  •  
  •   Jaeger · Oct 7, 2017 · 5155 views
  •   You need to sign in to view this topic
    This topic created in 3299 days ago, the information mentioned may be changed or developed.

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

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

    安装

    使用 Composer 安装:

    • 安装 QueryList
    composer 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 replies  •  2017-10-30 03:55:11 +08:00
    chnyang
        1
    chnyang  
       Oct 7, 2017 via Android
    支持支持。
    vovov
        2
    vovov  
       Oct 7, 2017 via Android
    很好的插件,支持下!
    koodai
        3
    koodai  
       Oct 7, 2017
    确实挺好的,不过我一直比较抵触使用 composer,平时维护一个单脚本足够方便,引入包管理器反而把问题复杂化了。

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

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

    目前已有的插件如:多线程采集插件、抓取动态 JavaScript 渲染页面的 PhantomJS 插件等
    GGGG430
        7
    GGGG430  
       Oct 9, 2017
    @Jaeger 多谢回答, 插件不错
    YMB
        8
    YMB  
       Oct 9, 2017
    mark
    moke
        9
    moke  
       Oct 9, 2017
    百度都不支持盘内搜索,
    2ME
        10
    2ME  
       Oct 9, 2017
    @Jaeger 大佬 3.0Multi 并发采集后 如果想在 success 的 function 里接着当前线程下载图片怎么操作.. 直接调用下载的话下载图片的时候会有阻塞 现在处理都是把图片链接存到最后再开一个 Multi 去专门下载之前的图片 = =
    kwan
        11
    kwan  
       Oct 30, 2017
    @koodai 你也说了,单一脚本的情况之下,如果实际情况是 A 依赖于 B,而 B 又依赖于 C,composer 关键是帮你解决了依赖,就好像 Linux 的包管理器 rpm、apt 那样
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1134 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 23:06 · PVG 07:06 · LAX 16:06 · JFK 19:06
    ♥ Do have faith in what you're doing.