From 7e6e986b8e58aa6252e55aaaebd7843b83731b91 Mon Sep 17 00:00:00 2001 From: kiddyuchina <58631254@qq.com> Date: Sun, 16 Apr 2017 21:35:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=E4=B8=8E=20README.md=20=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 +++++++++++++++++++++---------------- src/Beanbun.php | 2 +- src/Lib/Helper.php | 12 ++++-------- src/Queue/MemoryQueue.php | 2 +- src/Queue/RedisQueue.php | 2 +- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 424d8c5..40a6ddd 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,43 @@ #Beanbun 简介 ---- -Beanbun 是一个简单可扩展的爬虫框架,支持守护进程模式与普通模式,守护进程模式基于 Workerman,下载器基于 Guzzle。 +Beanbun 是一个简单可扩展的爬虫框架,支持分布式,支持守护进程模式与普通模式,守护进程模式基于 [Workerman](http://www.workerman.net),下载器基于 [Guzzle](http://guzzle.org)。 特点 ---- -- 支持守护进程与普通两种模式 -- 默认使用guzzle进行爬取 +- 支持守护进程与普通两种模式(守护进程模式只支持 Linux 服务器) +- 默认使用 guzzle 进行爬取 - 支持分布式 -- 支持内存、Redis等多种队列方式 +- 支持内存、Redis 等多种队列方式 - 支持自定义URI过滤 - 支持广度优先和深度优先两种爬取方式 -- 遵循PSR-4标准 -- 爬取网页分为多步,每步均支持自定义动作(如添加代理、修改user-agent等) +- 遵循 PSR-4 标准 +- 爬取网页分为多步,每步均支持自定义动作(如添加代理、修改 user-agent 等) - 灵活的扩展机制,可方便的为框架制作插件:自定义队列、自定义爬取方式... 安装 ---- + +Beanbun 可以通过 composer 进行安装。 + ``` $ composer require kiddyu/beanbun ``` -示例 +快速开始 ---- -创建一个文件start.php,包含以下内容 + +创建一个文件 start.php,包含以下内容 + ``` php name = '950d'; -$beanbun->count = 5; -$beanbun->seed = 'http://www.950d.com/'; -$beanbun->max = 100; -$beanbun->logFile = __DIR__ . '/950d_access.log'; +$beanbun->seed = [ + 'http://www.950d.com/', + 'http://www.950d.com/list-1.html', + 'http://www.950d.com/list-2.html', +]; $beanbun->afterDownloadPage = function($beanbun) { file_put_contents(__DIR__ . '/' . md5($beanbun->url), $beanbun->page); }; @@ -40,9 +45,9 @@ $beanbun->start(); ``` 在命令行中执行 ``` -$ php start.php start +$ php start.php ``` - -更多详细内容,请查看[文档 http://www.beanbun.org](http://www.beanbun.org) +接下来就可以看到抓取的日志了。 +更多详细内容,请查看 [文档](http://www.beanbun.org) diff --git a/src/Beanbun.php b/src/Beanbun.php index 4168ef5..5c84bbf 100644 --- a/src/Beanbun.php +++ b/src/Beanbun.php @@ -10,7 +10,7 @@ class Beanbun { - const VERSION = '1.0.0'; + const VERSION = '1.0.1'; public $id = null; public $name = null; diff --git a/src/Lib/Helper.php b/src/Lib/Helper.php index a5170ec..d7e945d 100644 --- a/src/Lib/Helper.php +++ b/src/Lib/Helper.php @@ -1,12 +1,8 @@ [ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', @@ -41,11 +37,11 @@ public static function getUrlbyHtml($html, $url) $pattern = "'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1) (.*?)\\1 | ([^\s\>]+))'isx"; preg_match_all($pattern, $html, $match); $match = array_merge($match[2], $match[3]); - $hrefs = array_flip(array_flip($match)); + $hrefs = array_flip(array_flip(array_filter($match))); foreach ($hrefs as $key => $href) { $hrefs[$key] = self::formatUrl($href, $url); } - return $hrefs; + return array_flip(array_flip($hrefs)); } public static function formatUrl($l1, $l2) diff --git a/src/Queue/MemoryQueue.php b/src/Queue/MemoryQueue.php index b006e67..bee4ab0 100644 --- a/src/Queue/MemoryQueue.php +++ b/src/Queue/MemoryQueue.php @@ -8,7 +8,7 @@ class MemoryQueue implements QueueInterface { public $globalData = null; - public $maxQueueSize = 0; + public $maxQueueSize = 10000; public $maxQueuedCount = 0; protected static $server = []; diff --git a/src/Queue/RedisQueue.php b/src/Queue/RedisQueue.php index ccf359c..9450121 100644 --- a/src/Queue/RedisQueue.php +++ b/src/Queue/RedisQueue.php @@ -5,7 +5,7 @@ class RedisQueue implements QueueInterface { public $redis = null; public $config = []; - public $maxQueueSize = 0; + public $maxQueueSize = 10000; public $maxQueuedCount = 0; protected $name = '';