Beanbun: 简单开放的 PHP 爬虫框架

Beanbun

Beanbun 是用 PHP 编写的多进程网络爬虫框架,具备良好的开放性、高可扩展性。
项目地址:https://github.com/kiddyuchin...
文档地址:http://beanbun.orgphp

由来

我但愿有这样一个爬虫框架:在简单需求的状况下,能够用最少的代码快速创建一个功能完善的爬虫;并且若是你愿意,你能够对爬虫进行你想要的任何修改。它要自然支持分布式,支持多进程(或线程),利用 composer,能够方便的创建起一个功能强大的爬虫。
在对以前写过的一个爬虫的功能不断的删减调整后,就有了目前的 Beanbun,这个名字来自于做者家的猫,此猫名叫门丁,“门丁”是北方的一种面点。门丁 -> 豆包 -> bean bun。
我但愿在这里可以抛砖引玉,和你们一块儿继续完善 Beanbun。html

特色

  • 支持守护进程与普通两种模式(守护进程模式只支持 Linux 服务器)git

  • 默认使用 Guzzle 进行爬取github

  • 支持分布式服务器

  • 支持内存、Redis 等多种队列方式网络

  • 支持自定义URI过滤composer

  • 支持广度优先和深度优先两种爬取方式框架

  • 遵循 PSR-4 标准分布式

  • 爬取网页分为多步,每步均支持自定义动做(如添加代理、修改 user-agent 等)网站

  • 灵活的扩展机制,可方便的为框架制做插件:自定义队列、自定义爬取方式...

安装

Beanbun 能够经过 composer 进行安装。

$ composer require kiddyu/beanbun

一个简单的例子

建立一个文件 start.php,包含如下内容

<?php
require_once(__DIR__ . '/vendor/autoload.php');

use Beanbun\Beanbun;
$beanbun = new Beanbun;
$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);
};
$beanbun->start();

在命令行中执行

$ php start.php

接下来就能够看到抓取的日志了。

2017-04-04 14:14:14 Beanbun worker download http://www.950d.com/ success.
2017-04-04 14:14:14 Beanbun worker download http://www.950d.com/list-1.html success.
2017-04-04 14:14:14 Beanbun worker download http://www.950d.com/list-2.html success.

最后

后边我会针对一些不一样类型的网站,写一些用 Beanbun 实现爬虫的小例子,欢迎你们持续关注。

相关文章
相关标签/搜索