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