QueryList 使用 jQuery 的方式来做采集,拥有丰富的插件。
下面来演示QueryList
使用Baidu 搜索引擎
插件轻松实现站内搜索。
使用 Composer 安装:
composer require jaeger/querylist
composer require jaeger/querylist-rule-baidu
class Baidu:
<?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);
当然除了 Baidu 搜索引擎插件,QueryList 也有 Google 搜索引擎插件,也可以实现同样的功能。
文档: https://doc.querylist.cc/site/index/doc/43 GitHub: https://github.com/jae-jae/QueryList-Rule-Google
1
chnyang 2017-10-07 11:33:52 +08:00 via Android
支持支持。
|
2
vacker 2017-10-07 11:36:35 +08:00 via Android
很好的插件,支持下!
|
3
koodai 2017-10-07 21:55:13 +08:00
确实挺好的,不过我一直比较抵触使用 composer,平时维护一个单脚本足够方便,引入包管理器反而把问题复杂化了。
“ 如果你的 PHP 版本还停留在 PHP5,或者不会使用 Composer,你可以选择使用 QueryList3 ” QL 和 QL3 有区别吗? |
4
GGGG430 2017-10-08 17:11:25 +08:00
|
6
Jaeger OP @GGGG430 #4
可以理解为 QueryList 是 Gotte 的超集! QueryList 除了拥有与 Gotte 类似的 DOM 操作能力和内置强大 GuzzleHttp,还有: 1.拥有比 Goutte 更全的选择器,如:伪选择器`:eq(0)` 2.拥有通用的列表采集方案 3.拥有乱码解决能力 4.拥有内容过滤功能 5.可扩展,拥有丰富的插件 6.API 简洁易用 目前已有的插件如:多线程采集插件、抓取动态 JavaScript 渲染页面的 PhantomJS 插件等 |
8
YMB 2017-10-09 09:30:12 +08:00
mark
|
9
moke 2017-10-09 09:36:19 +08:00
百度都不支持盘内搜索,
|