跳到主要内容

7 篇博文 含有标签「DevOps」

开发运维和持续集成

查看所有标签

Crawlab AI: 借助大语言模型 (LLM) 打造智能爬虫

· 阅读需 6 分钟
Marvin Zhang
软件工程师 & 开源爱好者

“如果我当年去问顾客他们想要什么,他们肯定会告诉我:一匹更快的马” -- 亨利•福特

前言

当我初入职场时,作为数据分析师的我,偶然体验到了网络爬虫(Web Crawler)自动化提取网页数据的能力,自此我一直对这个神奇的技术充满好奇。随着后来我不断钻研爬虫技术,逐渐了解到网络爬虫的核心技术,其中就包括网页解析(Parsing),即通过分析网页 HTML 结构而构建基于 XPath 或 CSS Selector 数据提取规则的过程。这个过程长期以来都需要人工介入,虽然对于爬虫工程师来说相对简单,但如果需要大规模抓取,这个过程是非常消耗时间的,而且随着网页结构变化会增加爬虫维护成本。本篇文章将介绍我开发的基于**大语言模型(LLM)**的智能爬虫产品:Crawlab AI。虽然它还处于早期开发阶段,但已经展现出强大的潜力,有望让数据从业者轻松获取数据。

相关工作

作为爬虫管理平台 Crawlab 的创始人,一直都热衷于让数据获取变得简单和轻松。跟数据从业者不断交流,我意识到智能爬虫(或通用爬虫)的大量需求,即不用人工编写解析规则就可以抓取任何网站的目标数据。当然,也不止我一个人在研究和试图解决这个问题:2020年1月,青南大佬发布了基于标点密度的通用文章解析库 GeneralNewsExtractor,可以 4行代码实现通用新闻爬虫;2020年7月,崔庆才大佬发布了 GerapyAutoExtractor,基于 SVM 算法实现了列表页数据抓取;2023年4月,我通过高维度向量聚类算法,开发了 Webspot,同样可以自动提取列表页。这些开源软件的主要问题在于,识别的精准度与人工编写的爬虫规则有一定差距。

此外,商业爬虫软件 Diffbot八爪鱼 通过自研的机器学习算法,也实现了部分通用数据抓取的功能。但可惜的是它们的使用成本相对较高。例如,Diffbot 的最低套餐就需要每月支付 299 美元的订阅费。

探索Crawlab:您的企业级爬虫管理新选择

· 阅读需 3 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引言

在现代的数据驱动时代,获取和管理网上信息变得至关重要。为企业和开发者提供强大支持的,Crawlab出现了,它是一个企业级的爬虫管理平台,特点是开箱即用。无论您的团队规模大小,Crawlab都能为您提供专业和高效的爬虫管理解决方案。

核心功能

Crawlab的核心功能包括分布式系统管理、爬虫任务管理和调度、文件编辑、消息通知、依赖管理、Git集成以及性能监控等多方面。其中,它的分布式节点管理让爬虫程序能够在多台服务器上高效运行。再也不用担心手动上传、监控和部署的麻烦,Crawlab将这一切全部自动化,确保您能轻松调度爬虫任务,并实时查看爬虫程序的运行状态以及任务日志。

爬虫列表

特色亮点

特别值得一提的是,Crawlab提供在线编辑爬虫代码的功能,支持主流编程语言高亮显示,让您轻松调试爬虫程序。此外,它还提供了Crontab风格的定时任务设置,让您能在指定时间自动执行爬虫任务,极大提高了工作效率。

代码编辑

实战数据分析: 开源的自动化数据探索神器 Rath

· 阅读需 5 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

探索性数据分析(Exploratory Data Analysis,EDA)是数据分析师或数据科学家面对数据集(Dataset)时经常需要完成的任务。利用 Pandas、Seaborn 之类的 Python 工具可以很轻松的完成单变量分析(Univariate Analysis)、双变量分析(Bi-variate Analysis)、多变量分析(Multi-variate Analysis),但使用这些它们做数据探索不仅有一定技术门槛,而且还需要人工编写脚本来进行数据操作和分析。本篇文章将介绍一个非常酷的自动化数据探索开源工具 Rath,可以自动化的完成 EDA,成为数据分析界的 Autopilot 或 Copilot。

Rath

安装 Rath

由于 Rath 还在高速迭代中,文档也不是很齐全,要较快的体验只能到官网提供的演示网址

不过,如果会一些前端技术的话,还是可以本地安装,只是步骤稍微繁琐一些。

在开始之前,保证你安装了 Node.js 16 以及 Yarn。

实战数据分析: 利用开源项目 Superset 搭建自助数据分析平台

· 阅读需 7 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

数据分析(Data Analytics)以及商业智能(Business Intelligence)是很多企业实现数字化战略的重要业务模块。我们之前在《浅谈数据:数据领域需要掌握些什么?》中介绍过数据领域中不可获取的部分,也就是架构流程方面的软件工具辅助服务。本文将介绍的数据分析开源平台 Apache Superset 就能提供这样的服务。本文将简单介绍如何安装部署以及使用 Superset。

Superset Official Site

Superset 简介

Superset 是 Apache 基金会孵化的开源自助数据分析平台,可以看成开源版的 Power BITableau,不过 Superset 的交互界面仅限于 Web。整个系统基于 Python Flask,集成了 MySQL、Postgres、SQL Server 等主流关系性数据库,以及 ElasticSearch、ClickHouse、Snowflake 等现代数据库。前端可视化分析界面跟 Power BI 和 Tableau 非常类似,操作也相对简便。因此,如果需要搭建一个类似 Power BI 或 Tableau 这样的企业级数据分析平台,在不氪金的情况下,Superset 是个非常不错的选择。

Superset Dashboard

实战 CI/CD:利用 GitHub Actions 管理大型开源项目的自动化构建

· 阅读需 6 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

前不久在关于 CI/CD 文章《实战 CI/CD:微软加持的 GitHub Actions,怎么用才香?》中简单介绍了一下 GitHub 的官方 CI/CD 工作流服务 GitHub Actions,用一个实际的 Python 项目例子做了演示。不过,这部分内容相对较初级,而对于一些大型项目来说,我们可能需要更复杂的工作流。而这篇文章的主要目的是帮助开发者们熟悉软件开发中的工程化部分。

本篇文章以实际的大型项目为例,介绍一下笔者的开源项目 Crawlab 在 GitHub Actions 中的 CI/CD 应用。对 Crawlab 不熟悉的读者,可以参考一下官网官方文档,简单来说,Crawlab 就是能帮助提高数据采集效率的爬虫管理平台。

整体 CI/CD 架构

Crawlab 新版本 v0.6 将不少通用的模块进行了拆分,因此整个项目由多个子项目依赖组成,例如主项目 crawlab 依赖于前端 crawlab-ui 和后端 crawlab-core。这样切分成多个子项目之后,各个模块耦合性降低可维护性增加

以下是 Crawlab 的整体 CI/CD 架构示意图。

实战 CI/CD:微软加持的 GitHub Actions,怎么用才香?

· 阅读需 6 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

GitHub Actions 是 GitHub 官方推出的 CI/CD 工作流(Workflow)服务,旨在减轻开源贡献者们运维负担,让云原生 DevOps 赋能开源社区。如果您不知道什么是 CI/CD、DevOps,请参考笔者之前在夜幕团队公众号写的文章《用开源软件轻松打造企业级DevOps工作流》。笔者的开源项目,例如 CrawlabArtiPub,都集成了 GitHub Actions。作为开发贡献者,我认为 GitHub Actions 不仅好用,而且是真香免费(这是最主要的)。希望很多不了解如何将 GitHub Actions 运用在自己的开源项目的开发者,可以从本文中得到灵感。

从官方文档开始

对于 GitHub Actions 不熟悉的朋友,我强烈推荐你先阅读 GitHub Actions 官方文档,这里有视频介绍快速开始例子、概念、原理等等。如果把文档研究透了,再结合自己平时运用 CI/CD 的经验,应该可以很轻松的在 GitHub 上做 DevOps。本文所用到的相关代码,都可以在官方文档上找到对应的参考指南。

GitHub Actions Docs

思路

先理清一下我们想要实现什么:用 GitHub Actions 来运行仓库中的爬虫获取每日 GitHub Trending

浅谈测试:单元测试的爱恨情仇

· 阅读需 4 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

"开发安全可靠的应用程序的最好方式,就是不写代码。"--Kelsey Hightower

很多开发者应该或多或少听过单元测试(Unit Tests),甚至编写过,也或许对其有所了解。不过,在如今瞬息万变的环境下,单元测试似乎正在成为鸡肋。程序员们都知道它的好处,但是对其显得比较冷淡。“进度这么赶,还有什么时间写单元测试呢?”这样的话是不是听着很熟悉?

单元测试是什么?

所谓单元测试,简而言之就是程序员编写测试代码来验证自己写的功能代码是否能按照要求运行。如果测试代码不能通过,就说明自己写的功能代码是有问题的。

这种自己测自己的方式似乎有些可笑,相当于考试时看着答案做题。然而在测试领域,这样的方式有个专业术语叫白盒测试。而白盒测试的对立术语叫黑盒测试,也就是用其他方式来验证。单元测试属于白盒测试,而更高级的测试例如集成测试(Integration Tests)、端到端测试(End to End Tests)、UI 测试(UI Tests),都属于黑盒测试。单元测试仅仅是测试代码本身。

Testing Pyramid

单元测试有什么用?

单元测试在敏捷开发(Agile Development)中是非常有用的工具。甚至有些敏捷框架,例如极限编程(XP),就要求每一个功能必须被单元测试覆盖。在之前的文章《浅谈敏捷:你的团队在正确实践敏捷吗?》就提到过单元测试的重要性。