2017 © Pedro Peláez
 

library template-collector

Template collector

image

slince/template-collector

Template collector

  • Tuesday, September 20, 2016
  • by slince
  • Repository
  • 2 Watchers
  • 3 Stars
  • 11 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

模板采集器

通用模板采集器基本组件, (*1)

安装

  • 要求, (*2)

    • php >= 5.5.9
  • 基于composer安装, (*3)

    composer require slince/template-collector *@dev
    

    或者安装到全局目录, (*4)

    composer global require slince/template-collector *@dev
    

基本用法

  • 基于命令行使用
collector capture [目标网址]

例:, (*5)

collector capture http://demo.sc.chinaz.com/Files/DownLoad/moban/201604/moban1178/index.html

查看使用帮助, (*6)

collector capture --help

你最好将vendor/bin目录添加到全局路径下,否则可能无法查找到命令, (*7)

  • 作为基本组件使用
use Slince\Collector\Collector;
use Slince\Event\Event;

$savePath = __DIR__ . '/html'; //模板保存路径
$entranceUrl = 'http://demo.sc.chinaz.com/Files/DownLoad/moban/201604/moban1178/index.html'; //入口链接
//创建采集器
$collector = new Collector($savePath, $entranceUrl);
//绑定事件
$collector->getDispatcher()->bind(Collector::EVENT_CAPTURED_URL_REPOSITORY, function(Event $event){
    $repository = $event->getArgument('repository');
    echo $repository->getUrl()->getUrlString() . " Captured OK!\r\n";
});
$collector->run();

事件绑定

事件绑定是可选的,如果不绑定事件采集器依然可以正常进行,但如果您需要知道采集器进度,绑定事件是个不二的选择;目前采集器 支持三种事件 - Collector::EVENT_FILTERED_URL url筛选结束事件,当采集器判断完成一个新链接是否需要被处理的时候触发 - Collector::EVENT_CAPTURE_URL_REPOSITORY 开始采集页面事件,当链接内容下载完毕开始处理采集时触发 - Collector::EVENT_CAPTURED_URL_REPOSITORY 页面采集完成事件,当链接内容采集完毕时触发, (*8)

设置允许抓取的host

为了避免采集器过分采集,默认情况下采集器不会抓取host和入口链接的host不符的链接,所以如果你要采集的网站的资源文件使用了 其它域名,那么您需要设置允许抓取的host, (*9)

$collector->setAllowedCaptureHosts([
    ...
]);

设置采集规则

如果您要采集的网站同类型链接过多,那么您可以设置采集规则避免重复下载, (*10)

$collector->setUrlPatterns([
    'category' => '#/categories/\d+#',
    'product' => '#/products/\d+#',
    'article' => '#/articles/\d+#',
]);
  • 如果符合采集规则的url没有文件扩展名,那么在生成本地文件的时候会采用采集规则的键名做文件名,比如例中的分类页 在下载到本地的时候会使用category.html做文件名, (*11)

  • 如果您需要只下载符合采集规则的url,那么您需要做个设置, (*12)

$collector->setOnlyCaptureUrlPatterns(true);

白名单、黑名单链接

$collector->setBlacklistUrls([
   ...
]);
$collector->setWhitelistUrls([
   ...
]);

建议在终端环境执行程序,否则可能会因为采集周期过长导致采集失败, (*13)

The Versions

20/09 2016

dev-lazy

dev-lazy

Template collector

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

by tao

20/09 2016

dev-master

9999999-dev

Template collector

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

by tao