specialnot 2015-11-16 15:15:44 12693次浏览 9条评论 16 4 0

1. 思路
(1)、确定采集网站->确定分类->确定分页->确定文章列表
(2)、将列表放入队列,确定队列处理函数(worker)
(3)、后台运行队列程序,当队列有内容的时候,就根据worker处理队列

2. 准备
(1)安装php-resque

    详情https://github.com/chrisboulton/php-resque

(2)安装 FriendsOfPHP/Goutte

    详情https://github.com/FriendsOfPHP/Goutte

(3)数据库 文章表(article)、采集表(gather)

3. 执行采集
(1)进入项目目录 cd /var/www/myYii
(2)查看队列程序(queue/run)有没有后台运行 pa aux |grey yi
(3)如果没有运行,则执行程序。QUEUE=* php yii queue/run &
(4)queue/run 会自动根据自定义处理类以及worker进行工作
( \Resque::enqueue('article_spider', 'console\models\ArticleJob',['category'=>$category,'url'=>$url,'className'=>$className,'publishTime'=>$publishTime]);)

4. 调用流程
(1) php yii queue/run
调用 console\controllers\QueueController 中 actionRun方法,程序会根据队列内容以及队列处理函数自动采集文章<br/>
(2) php yii article/run yiichina
调用 console\controllers\ArticleController 中的 actionRun 方法,根据 $name 参数调用对应的网站采集类,此处调用 YiichinaSpider.php
(3)YiichinaSpider类中
先初始化网站信息,然后确定所有的采集分页(实例处理可能不合理,具体方法可以自己根据网站分页进行制定),然后整理每页的文章列表,最后把他们放入队列
(4)当队列中出现内容的时候
后台运行的队列函数(queue/run)会自动根据自己设定的处理类,此处是(‘console\models\ArticleJob’),对队列中数据进行处理。该类中必须有perform方法,QUEUE默认调用它处理队列数据
(5)队列处理
在ArticleJob中,先获取队列数据,然后插入采集内容,插入article表,最后存放采集记录

YII2网站采集
(1)QueueController.php
(2)ArticleController.php
(3)ArticleJob.php
(4)ArticleSpider.php
(5)YiichinaSpider.php

觉得很赞
您需要登录后才可以评论。登录 | 立即注册