Giter Club home page Giter Club logo

beanbun's Introduction

Build Status License Sauce Test Status

简介

Beanbun 是一个简单可扩展的爬虫框架,支持分布式,支持守护进程模式与普通模式,守护进程模式基于 Workerman,下载器基于 Guzzle

文档

https://github.com/kiddyuchina/Beanbun/blob/master/docs/chs/README.md

广告

推荐一下最近发现的一个很好用的全球代理:SmartProxy
专业海外http代理商,有1亿真实住宅IP资源,覆盖全球,高匿稳定提供100%原生住宅IP,支持社交账户、电商平台、网络数据收集等服务。
匿名性很好,伪装度很高,IP限制问题轻松解决。
本人测试用过之后感觉很不错。
现春季价格优惠,动态住宅代理只要65折!

特点

  • 支持守护进程与普通两种模式(守护进程模式只支持 Linux 服务器)
  • 默认使用 guzzle 进行爬取
  • 支持分布式
  • 支持内存、Redis 等多种队列方式
  • 支持自定义URI过滤
  • 支持广度优先和深度优先两种爬取方式
  • 遵循 PSR-4 标准
  • 爬取网页分为多步,每步均支持自定义动作(如添加代理、修改 user-agent 等)
  • 灵活的扩展机制,可方便的为框架制作插件:自定义队列、自定义爬取方式...

安装

Beanbun 可以通过 composer 进行安装。

$ composer require kiddyu/beanbun

快速开始

创建一个文件 start.php,包含以下内容

<?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

接下来就可以看到抓取的日志了。

插件

更多详细内容,请查看 文档

beanbun's People

Contributors

aiwhj avatar iangely avatar kiddyuchina avatar marsberrys avatar taozywu avatar zgaron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beanbun's Issues

max 属性的作用是什么呢?

已经给设定$beanbun->max = 3;
但是爬虫会不停的爬,如果是长期爬取某一个网站,爬过的地址是不是存数据库比较准吧

一直想抓2345小说

这个能抓2345小说,嘿嘿,写写正则就ok了,还有源码咋没用单元测试

可以解析网页吗?

爬虫框架我理解就是下载网页,对于下载下来的网页不不能进行分析,比如说提前网页标题,提取关键字,提取网页主内容摘要,缩略图这些是基本的,更高级别的还有很多了。

请问下作者你这个框架除了支持各种方式爬取之外,对爬下来的网页做进一步处理支持什么呢?或者有提供一种插件的形式可以让使用者自己来处理。

爬取有重定向的链接时,获取url不正确

在爬取百度搜索到的ur时,如果url有重定向,框架自动重定向了,但是url还是重定向之前的。
我尝试直接把GuzzleHttp\Client类的自动重定向配置设置为false,尝试后可以获取到即将重定向的页面,但是$beanbun->options中没有即将重定向的链接

redis auth问题

redis auth问题
连接Redis服务的时候,config中应该添加auth授权配置,并在构造函数中添加auth授权。

关于去重性能

看了源代码中去重使用的2种方法,一个是md5直接放redis set,这个数据量到百万千万后性能不行
另一个使用bloomfilter映射redis bitmap,这2者在爬取URL数量在千万级性能差距有多少?

请问一直找不到beadbun这个类是哪里的原因呢?

Uploading 6666.png…

[root@localhost www]# ls
composer.json composer.lock vendor
[root@localhost www]# vim start.php
[root@localhost www]# php start.php
PHP Fatal error: Uncaught Error: Class 'Beanbun\Beanbun' not found in /www/start.php:3
Stack trace:
#0 {main}
thrown in /www/start.php on line 3
[root@localhost www]#

这是刚刚用composer安装好,然后复制了start.php执行的结果

Beanbun整合到yii2框架时,无法运行

use yii\console\Controller;
use Beanbun\Beanbun;

class DemoController extends Controller
{

    public function actionBeanbun()
    {
        $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 Notice 'yii\base\ErrorException' with message 'Undefined property: Beanbun\Beanbun::$count'
in /xxx/vendor/kiddyu/beanbun/src/Beanbun.php:136

问题二
在Beanbun加上count属性后,发现依然不能工作

会一直提示

Usage: php yourfile.php {start|stop|restart|reload|status|connections} [-d]

PHP Warning: array_flip()

PHP Warning: array_flip(): Can only flip STRING and INTEGER values! in /vendor/kiddyu/beanbun/src/Lib/Helper.php on line 44

有时间up一下,^_^

关于post问题

例子中都是get的,没有post的例程,不知道data数据在那里设定啊?能不能举一个post的例子呢。
$beanbun->seed = [
//'http://www.950d.com/',
[
'http://www.950d.com/list-2.html',
[
'method' => 'POST',
]
]
];
按例程中,这样设定,一是没有postdata数据,二是就算这样,也报错。crul error 3.

麻烦给个post的例子,谢谢

爬虫似乎不会自动结束爬取,爬取完成后无法执行stopWorker

作为测试我配置了$beanbun->UrlFilter,给了一个seed让爬虫自己爬,在规则中大概能匹配7张页面,但是页面抓完之后一直没有执行stopWorker,而且任务管理器中的进程还在。
我尝试使用php start.php stop,在任务管理器中看到爬虫进程已经结束了,但是还是还是没有执行stopWorker();
部分代码:
$bean->stopWorker = function($b){ $b->log('执行了一次stopWorker'); }
表现在:日志文件中并没有'执行了一次stopWorker'

遇到网站返回 HTTP 错误,但爬虫不会停止,一直无限爬?

遇到某些 Seed 有时返回 500、或404、或超时,爬虫会一直重试,然后好像在爬一个空地址,而且也不进入afterDownloadPage。

1、网站故障无法避免,但爬虫应该要怎样正确处理这种情况?
2、在afterDownloadPage里除了 page 属性以外,能否获得网站返回的 http code 、Response Header Cookie 这些??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.