Yurun-Crawler 低代码 高性能 分布式爬虫采集框架

发布于 2021-05-10 21:42:53 字数 2346 浏览 1833 评论 0

宇润爬虫框架 Yurun Crawler 是一个低代码、高性能、分布式爬虫采集框架,这可能是最一把梭的爬虫框架。

Yurun Crawler 基于 imi 框架开发,运行在 Swoole 常驻内存的协程环境。

为什么会开发这个框架?遇上有爬虫相关需求,调研了一些市面上现有的 PHP 爬虫框架,甚至是其它语言的爬虫框架,功能都十分简陋,需要编写的重复代码极多,不够一把梭。

目标

能够用最少的代码,方便快速地实现爬虫采集功能。

愿景

成为宇宙第一爬虫框架,以后提到爬虫就想到 Yurun Crawler 可以一把梭实现!

功能特性

  • 低代码,几乎不需要编写代码,大部分逻辑依靠注解实现
  • 高性能,基于 imi + Swoole 常驻内存及协程实现。即便只开一个下载器进程,也足以支撑大量的并发下载任务。
  • 分布式,采集的流程由消息队列推动,依靠 Redis 等中间件实现纯天然的分布式特性
  • 支持下载器并发限流
  • 内置解析能力强,支持:Dom 解析、正则、JSON、Chrome Headless 页面渲染采集
  • 代理 IP 池,支持:MySQL、Redis
  • 支持定时采集
  • 支持模型存储
  • 方便扩展

示例

Demo Example: https://github.com/Yurunsoft/yurun-crawler-example

主要采集逻辑,可通过注解的方式来编写,超级简单:

<?php
namespace Yurun\CrawlerApp\Module\YurunBlog\Article\Model;

use Yurun\Crawler\Module\Parser\Annotation\DomSelect;
use Yurun\Crawler\Module\Parser\Enum\DomSelectMethod;
use Yurun\Crawler\Module\DataModel\Contract\BaseDataModel;

/**
 * 文章内容模型
 */
class ArticleModel extends BaseDataModel
{
    /**
     * 标题
     * 
     * @DomSelect(selector=".article-view h1", method=DomSelectMethod::TEXT)
     *
     * @var string
     */
    public $title;

    /**
     * 内容
     *
     * @DomSelect(selector=".article-content", method=DomSelectMethod::HTML)
     * 
     * @var string
     */
    public $content;

    /**
     * 时间
     *
     * @DomSelect(selector=".article-info .time", method=DomSelectMethod::TEXT)
     *
     * @var string
     */
    public $time;

}

概念

采集项目

有时候,我们会先采集列表页,再采集内容页

列表页、内容页,都是采集项目,他们的下载、解析、处理逻辑可能都不相同

下载器

负责请求网址,下载并存储内容。

多协程的架构下,支持同时下载海量数据。

支持限流。

数据模型

定义需要从页面中,提取的内容属性。

解析器

负责解析下载后的内容,从中提取需要的信息,返回数据模型。

支持:Dom 解析、正则、JSON、Chrome Headless 页面渲染采集。

处理器

解析器解析出数据模型后,交由处理器进行处理。

存储器

负责将解析后的数据存储入库,支持多种存储方式,并且可以自由扩展。

代理 IP 池

实现代理 IP 池抽象,开发者可以很方便地对接不同接口方。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文