PHP爬虫框架Beanbun
来源:互联网 发布:渔夫淘宝秒杀神器2.0 编辑:程序博客网 时间:2024/05/17 11:59
Beanbun 是用 PHP 编写的多进程网络爬虫框架,具有良好的开放性、高可扩展性。
手册文档:http://beanbun.org/
支持守护进程与普通两种模式,守护模式在Linux环境命令运行,普通可以直接访问运行
如:普通模式直接访问,创建一个文件 start.php,包含以下内容
<?phprequire_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();
重点介绍多进程模式,支持多进程,可以让爬虫一直执行
普通模式下不依赖队列,而守护进程模式需要另外开启队列(内存队列、Redis 队列等),但拥有更多的功能,如可以自动发现页面中的链接加入队列,循环爬取。
首先建立一个队列文件 queue.php,写入下列内容
<?phprequire_once(__DIR__ . '/vendor/autoload.php');// 启动队列\Beanbun\Queue\MemoryQueue::server();
启动 start.php 之前,先命令行启动queue.php,即 先启动队列进程,再启动爬虫。
$ php queue.php start$ php start.php start
这次爬虫以我csnd博客为例子,爬虫抓取所有博客标题
start.php 文件如下:
<?phpuse Beanbun\Beanbun;use Beanbun\Lib\Helper;require_once(__DIR__ . '/vendor/autoload.php');$beanbun = new Beanbun;$beanbun->name = 'blog'; //爬虫名称$beanbun->count = 5;//爬虫进程数$beanbun->seed = 'http://blog.csdn.net/a519395243'; //爬虫地址$beanbun->max = 20;//最大抓取网页数量$beanbun->logFile = __DIR__ . '/qiubai_access.log'; //爬虫日志文件路径$beanbun->afterDownloadPage = function($beanbun) { //爬取网页后执行此回调。 $aa=$beanbun->page; $pa = '%<span class="link_title"><a href="/a519395243/article/details/.*?>(.*?)<\/a>\s+</span>%si'; preg_match_all($pa,$aa,$match); //简单正则处理,选出文章标题 print_r($match[1]); //打印在日志上};$beanbun->start();
linux 命令行先启动 内存队列 再 启动爬虫
执行成功后,查看日记 ,成功爬虫抓取到自己的所有文章标题
关闭爬虫
$ php queue.php stop$ php start.php stop
还可以设置 header 或者ua头,模拟人真实访问
$beanbun->userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36';
或者直接设置header头,浏览器F12开发工具 ,直接搞个header头过来就行$beanbun->options['headers'] = ['Accept'=>'image/webp,image/*,*/*;q=0.8','Accept-Encoding'=>'gzip, deflate, sdch, br','Accept-Language'=>'zh-CN,zh;q=0.8','Connection'=>'keep-alive','Host':'hm.baidu.com','Referer':'http://blog.csdn.net/a519395243''User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36']
抓取csdn博客不需要登录,如碰见需要登录的,可加上Cookie,模拟登录爬从
抓取网页后,可转化为JSON备用
$beanbun->afterDownloadPage = function($beanbun) { $beanbun->page = json_decode($beanbun->page, true);}
或者存进数据库
use Beanbun\Lib\Db;Db::$config = [ 'zhihu' => [ 'server' => '127.0.0.1', 'port' => '3306', 'username' => 'blog', 'password' => 'xxxxxx', 'database_name' => 'blog', 'database_type' => 'mysql', 'charset' => 'utf8', ]];
//插入数据库 ,其他请看手册Db::instance('blog')->insert("account", [ "user_name" => "D丶", "email" => "XXX", "title" => "XXXX"]);
Beanbun还有很多扩展,详细看手册
阅读全文
1 0
- PHP爬虫框架Beanbun
- php爬虫框架crawler
- 爬虫框架
- 爬虫框架
- 用php写的知乎爬虫,没有任何框架。
- 【php爬虫】
- php 爬虫
- 爬虫php
- 关于php的Goutte爬虫框架和selenium2的php-webdriver的理解
- 开源爬虫框架
- Python 爬虫框架
- python爬虫框架
- java 网络爬虫框架
- scrapy爬虫框架
- 爬虫框架汇总
- Scrapy爬虫框架入门
- Python 爬虫框架 scrapy
- WebMagic 爬虫框架学习
- 雅虎前端优化策略
- servlet_1
- 当前view铺满activity时,无法获取焦点,导致onKeyDown被activity消费
- CodeIgniter框架数据库ar类查询分页和总数量的方法
- erlang的消息队列
- PHP爬虫框架Beanbun
- ES6学习笔记(一)
- 使用lambda需要的注意事项
- 前端学习之本地储存与cookie
- pry使用
- 正则匹配url对应参数名的值
- 为iPhone X设计
- 站在 Java 后端视角来理解目前的前端开发
- Maven打包Spring boot,把依赖和配置文件及前端代码提取到jar文件外