PHPackages                             slince/spider - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. slince/spider

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

slince/spider
=============

Slince Spider

8231PHP

Since Feb 14Pushed 9y ago2 watchersCompare

[ Source](https://github.com/slince/spider)[ Packagist](https://packagist.org/packages/slince/spider)[ RSS](/packages/slince-spider/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Spider
======

[](#spider)

网页爬行工具

安装
--

[](#安装)

```
composer global require slince/spider *@dev

```

Basic Usage
-----------

[](#basic-usage)

创建一个Spider并启动

```
use Slince\Spider\Spider;

$spider = new Spider();
$spider->run('http://www.baidu.com');

```

设置黑/白名单

```
//白名单
$spider = setWhiteUriPatterns([
    '/page-foo-regex/'
]);
//黑名单
$spider = setBlackUriPatterns([
    '/page-bar-regex/'
]);
//需要提供标准可用的正则表达式
example:
$spider = setBlackUriPatterns([
    '/page-bar-regex/'
]);

```

事件 Spider在调度过程中会触发下面几个事件

- filterUri 过滤url事件，如果某个链接通过了spider的验证则会触发该事件；客户端可以通过监听该事件对链接做 进一步审查，如果设置不通过Spider会放弃对该链接的爬取 example:

```
//...
/**
 * 过滤链接事件
 * @param FilterUriEvent $event
 */
public function onFilterUri(FilterUriEvent $event)
{
    $uri = $event->getUri();
    if ($uri->getHost() != 'baidu.com') {
        $event->skipThis(); //如果不是百度的链接跳过
    }
}
//...

```

- collectUri 开始采集链接
- downloadUriError 链接内容下载失败
- COLLECT\_ASSET\_URI 开始处理该链接下面资源链接
- COLLECT\_COLLECTED\_ASSET\_URI\_URI 该链接下面资源链接处理完毕
- collectedUri 页面链接处理完毕（包括页面资源内容链接，图片，样式文件链接等），开始处理页面下面其它页面链接

命令行工具
-----

[](#命令行工具)

采集整站模板

example: 采集百度的模板

```
spider collect http://www.baidu.com

```

你可以使用json文件进行配置，进行更精细化的优化，详细模板参见 [spider.json](./spider.json)拷贝spider.json到工作目录，修改配置后执行

```
spider collect

```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3785826?v=4)[Tao](/maintainers/slince)[@slince](https://github.com/slince)

---

Top Contributors

[![slince](https://avatars.githubusercontent.com/u/3785826?v=4)](https://github.com/slince "slince (52 commits)")

### Embed Badge

![Health badge](/badges/slince-spider/health.svg)

```
[![Health](https://phpackages.com/badges/slince-spider/health.svg)](https://phpackages.com/packages/slince-spider)
```

###  Alternatives

[cybercog/laravel-optimus

An Optimus bridge for Laravel. Id obfuscation based on Knuth's multiplicative hashing method.

192564.1k](/packages/cybercog-laravel-optimus)[gregoiredavid/france-geojson

Contours des régions, départements, arrondissements, cantons et communes de France (métropole et départements d'outre-mer) au format GeoJSON

8111.1k1](/packages/gregoiredavid-france-geojson)[hyperf/snowflake

A snowflake library

25808.0k59](/packages/hyperf-snowflake)[elgentos/serversideanalytics2

Elgentos\_ServerSideAnalytics for magento 2

7095.7k](/packages/elgentos-serversideanalytics2)[helmich/schema2class

Build PHP classes from JSON schema definitions

36142.2k](/packages/helmich-schema2class)[jblond/php-diff

A comprehensive library for generating differences between two hashable objects (strings or arrays).

36125.1k1](/packages/jblond-php-diff)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
