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 實現爬蟲的小例子,歡迎你們持續關注。

相關文章
相關標籤/搜索