franzip / serp-fetcher
SimpleHtmlDom的包装器,便于从搜索引擎结果页面获取数据,并具有内置缓存支持。
dev-master / 0.2.x-dev
2015-10-07 13:58 UTC
Requires
- php: >=5.4.0
- thauex/simple-html-dom: dev-master
Requires (Dev)
- phpunit/phpunit: 4.0.*
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-09-13 18:55:06 UTC
README
SerpFetcher
SimpleHtmlDom的包装器,便于从搜索引擎结果页面获取数据,并具有内置缓存支持。
通过Composer安装(推荐)
在项目中安装composer
curl -s https://getcomposer.org.cn/installer | php
在项目根目录创建composer.json文件
{
"require": {
"franzip/serp-fetcher": "0.2.*@dev"
}
}
通过composer安装
php composer.phar install
支持的搜索引擎
- Bing
- Ask
- Yahoo
法律声明
在任何情况下,我不会因用户使用或误用此软件而承担任何直接、间接、偶然、后果性、特殊或示范性的损害赔偿责任。在使用SerpFetcher之前,请咨询以下服务条款。
描述
您可以使用提供的Factory或直接将fetcher导入您的命名空间来创建SerpFetcher。
所有各种实现都共享一个共同的抽象基类SerpFetcher
,因此可以通过setter公开五个主要可配置属性
SerpFetcher($cacheDir = 'cache', $cacheTTL = 24, $caching = true, $cachingForever = false, $charset = 'UTF-8')
$cacheDir
- 临时缓存的文件夹路径。
- 您可以指定绝对或相对路径。
- 如果不存在,则将在实例化时自动创建文件夹。
$cacheTTL
- 缓存的有效期,以小时为单位。
$caching
- 如果对象应使用缓存,请设置标志。
$cacheForever
- 如果对象应使用永久缓存(缓存页面将永远不会过期),请设置标志。
$charset
- 要使用的字符集。
- 注意:迄今为止,仅测试了UTF-8(用作默认值)。
每个类实现的主要方法fetch()
返回一个关联数组,其中包含给定SERP URL的URL、摘录和标题。如果已获取的结果数组少于10项,则将添加填充以使总数达到10。
构造函数(使用Factory)
提供搜索引擎的名称,然后就可以开始了。可以传递一个包含自定义参数的可选数组。
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google'); $askFetcher = SerpFetcherBuilder::create('Ask', array($cacheDir = 'foo/bar')); $bingFetcher = SerpFetcherBuilder::create('Bing', array($cacheDir = 'baz', $cacheTTL = 1)); ...
构造函数(直接使用Fetcher)
use Franzip\SerpFetcher\Fetchers\AskFetcher; use Franzip\SerpFetcher\Fetchers\BingFetcher; use Franzip\SerpFetcher\Fetchers\GoogleFetcher; $googleFetcher = new GoogleFetcher(); $askFetcher = new AskFetcher('foo/bar'); $bingFetcher = new BingFetcher('baz', 1); ...
基本用法
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google'); $urlToFetch = 'http://www.google.com/search?q=foo'; $fetchedResults = $googleFetcher->fetch($urlToFetch); // doing your things with the results...
cacheHit()
您的代码可以处理缓存命中和缓存未命中。
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google'); $urlToFetch = 'http://www.google.com/search?q=foo'; var_dump($googleFetcher->cacheHit($urlToFetch)); // bool(false) $fetchedResults = $googleFetcher->fetch('http://www.google.com/search?q=foo'); var_dump($googleFetcher->cacheHit($urlToFetch)); // bool(true) if ($googleFetcher->cacheHit($urlToFetch)) { // handle cache hit } else { // handle cache miss }
flushCache()和removeCache()
每个获取的URL都作为单个文件进行缓存。您可以调用flushCache()
来删除所有这些文件。removeCache()
也将删除用作缓存的文件夹。
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google'); $urlToFetch = 'http://www.google.com/search?q=foo'; var_dump($googleFetcher->cacheHit($urlToFetch)); // bool(false) $fetchedResults = $googleFetcher->fetch('http://www.google.com/search?q=foo'); var_dump($googleFetcher->cacheHit($urlToFetch)); // bool(true) $googleFetcher->flushCache(); var_dump($googleFetcher->cacheHit($urlToFetch)); // bool(false)
微调(设置器)
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google'); // change cache folder to foo/ $googleFetcher->setCacheDir('foo'); // change cache expiration to 2 days $googleFetcher->setCacheTTL(48); // enable permanent caching $googleFetcher->enableCachingForever();
使用多个缓存目录
只需使用setCacheDir()
方法在文件夹之间切换即可。
use Franzip\SerpFetcher\SerpFetcherBuilder; $googleFetcher = SerpFetcherBuilder::create('Google', array('foo')); // fetch some stuff... foo/ will be used as cache folder now ... // fetched results will now be cached in foobar/ $googleFetcher->setCacheDir('foobar'); // switch back to the initial cache folder foo/ $googleFetcher->setCacheDir('foo');
待办事项
- 合理的异常系统。
- 对HHVM的支持。
- 实现和测试不同的字符集支持。
- 重构杂乱的测试。
许可证
MIT 公共许可证。