QueryList curlMulti + phantomjs 多线程动态采集要怎么实现

发布于 2022-09-11 16:57:11 字数 2063 浏览 17 评论 0

问题描述

可以独立实现:多线程采集 、 采集动态渲染页面
但是想把这两个合并实现,就不知道如何下手了,
你大神帮帮忙.

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

/**

 * 多线程采集
 */
public function multi(){
    
    $ql = QueryList::getInstance();
    
    $ql->use(CurlMulti::class);
    $ql->use(CurlMulti::class,'curlMulti');
    
    // 采集某页面所有的图片
    $ql->rules([
        'city' => [
            '#speedlist [name=city]',
            'text'
        ],
        'time' => [
            '#speedlist [name=conntime]',
            'text'
        ]
    ])->curlMulti([
        'http://tool.chinaz.com/speedtest/baidu.com/',
        'http://tool.chinaz.com/speedtest/163.com/',
    ])->success(function (QueryList $ql,CurlMulti $curl,$r){
        /**没有集合动态渲染 模块,所以就查不到**/
    
        echo "Current url:{$r['info']['url']} \r\n";
        $data = $ql->query()->getData();
        print_r($data->all());
    })->start([
        // 最大并发数
        'maxThread' => 10,
        // 错误重试次数
        'maxTry' => 3
    ]);
}

/**

  • 使用PhantomJS采集JavaScript动态渲染的页面

*/
public function phantomjs(){

    
set_time_limit(0);

$domain = 'www.baidu.com';

$ql = QueryList::getInstance();
// 安装时需要设置PhantomJS二进制文件路径
$ql->use(PhantomJs::class, '/www/wwwroot/phantomjs/bin/phantomjs');
// or Custom function name
$ql->use(PhantomJs::class, '/www/wwwroot/phantomjs/bin/phantomjs', 'browser');

$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r) use ($domain) {
    $r->setMethod('GET');
    $r->setUrl('http://tool.chinaz.com/speedtest/' . $domain);
    $r->setTimeout(1000 * 40); // 60 seconds
    $r->setDelay(25); // 3 seconds
    return $r;
})
->rules([
    'city' => [
        '#speedlist [name=city]',
        'text'
    ],
    'time' => [
        '#speedlist [name=conntime]',
        'text'
    ]
])
->query()
->getData();

echo ($data->all());

exit();

}

你期待的结果是什么?实际看到的错误信息又是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文