dmoraschi/sitemap-common

网站地图生成器和爬虫库

v1.1.0 2016-08-21 23:07 UTC

This package is not auto-updated.

Last update: 2024-09-18 19:54:09 UTC


README

Build Status Scrutinizer Quality Score

此包提供了爬取网站和构建及写入网站地图文件的全部组件。

使用库的控制台应用程序示例: 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));

SameHostPolicyUniqueUrlPolicyValidExtensionPolicy 由库提供,您可以通过实现 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 接口来定义自己的收集器。