dmoraschi / sitemap-common
网站地图生成器和爬虫库
v1.1.0
2016-08-21 23:07 UTC
Requires
- php: >=5.6
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- mockery/mockery: @stable
- phpunit/phpunit: 4.*@stable
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-18 19:54:09 UTC
README
此包提供了爬取网站和构建及写入网站地图文件的全部组件。
使用库的控制台应用程序示例: dmoraschi/sitemap-app
安装
运行以下命令并提供最新稳定版本(例如 v1.0.0)
composer require dmoraschi/sitemap-common
或将其添加到您的 composer.json
文件中
"dmoraschi/sitemap-common": "1.0.*"
SiteMapGenerator
基本用法
$generator = new SiteMapGenerator( new FileWriter($outputFileName), new XmlTemplate() );
添加 URL
$generator->addUrl($url, $frequency, $priority);
添加单个 SiteMapUrl
对象或数组
$siteMapUrl = new SiteMapUrl( new Url($url), $frequency, $priority ); $generator->addSiteMapUrl($siteMapUrl); $generator->addSiteMapUrls([ $siteMapUrl, $siteMapUrl2 ]);
通过 SiteMapUrlCollection
设置网站地图的 URL
$siteMapUrl = new SiteMapUrl( new Url($url), $frequency, $priority ); $collection = new SiteMapUrlCollection([ $siteMapUrl, $siteMapUrl2 ]); $generator->setCollection($collection);
生成网站地图
$generator->execute();
爬虫
基本用法
$crawler = new Crawler( new Url($baseUrl), new RegexBasedLinkParser(), new HttpClient() );
您可以通过添加策略来告诉 Crawler
不要访问 某些 URL。以下为库提供的默认策略
$crawler->setPolicies([ 'host' => new SameHostPolicy($baseUrl), 'url' => new UniqueUrlPolicy(), 'ext' => new ValidExtensionPolicy(), ]); // or $crawler->setPolicy('host', new SameHostPolicy($baseUrl));
SameHostPolicy
、UniqueUrlPolicy
、ValidExtensionPolicy
由库提供,您可以通过实现 Policy
接口来定义自己的策略。
调用 crawl
函数,对象将从构造函数中的基本 URL 开始,爬取所有指定深度的网页。函数将返回所有唯一访问过的 Url
数组。
$urls = $crawler->crawl($deep);
您还可以通过向主对象添加 Collector
来指示 Crawler
在访问网页时收集自定义数据。
$crawler->setCollectors([ 'images' => new ImageCollector() ]); // or $crawler->setCollector('images', new ImageCollector());
然后检索收集到的数据
$crawler->crawl($deep); $imageCollector = $crawler->getCollector('images'); $data = $imageCollector->getCollectedData();
库提供 ImageCollector
,您可以通过实现 Collector
接口来定义自己的收集器。