跳到主要内容

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

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

引言

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

核心功能

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

爬虫列表

特色亮点

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

代码编辑

释放你的阅读潜能:用思阅(SRead)开启全新的智能阅读体验

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

“阅读是心灵的冒险,知识是灵魂的燃料。”

在信息爆炸的今天,阅读成了我们每个人不可或缺的一部分。然而,传统的阅读方式常常让我们陷入信息的海洋,难以分辨哪些是真正有用的知识。在这样的背景下,思阅(SRead)应运而生。

思阅

什么是思阅(SRead)?

思阅是一款基于人工智能(AI)的阅读助手,专门为提升你的阅读体验而设计。它不仅仅是一个电子书阅读器,更是你的个人阅读顾问和助手。

智能问答:随时解疑

不再需要在阅读中断的情况下去网上搜索或查阅其他资料,思阅的智能问答功能能够即时为你解答与文章内容或主题相关的任何问题。

浅谈生成式 AI 技术:检索增强生成 RAG

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

引言

如今,生成式 AI (Generative AI)的应用雨后春笋的涌现出来,让人应接不暇。而大型语言模型(LLM,Large Language Model),随着 ChatGPT 的发布而变得异常火热,是生成式 AI 应用的一个典型。但是,LLM 存在缺陷。其中一个比较大的问题在于幻觉(Hallucination):对于不熟悉的问题,LLM 会瞎编乱造,编造出看似专业却没有任何事实依据的答案。而为了解决这个问题,很多基于 AI 的知识问答系统采用了**检索增强生成(RAG)**技术,从而让 LLM 能够做出基于事实的回答,从而消除幻觉。本篇文章将简单介绍 RAG 是如何在知识问答系统中发挥作用的。

LLM

要理解 RAG,我们首先需要简单理解一下 LLM。其实,LLM 在大量的参数训练下,已经可以完成很多难以置信的 NLP 任务,例如问答、写作、翻译、代码理解等等。但是,由于 LLM 的“记忆”停留在预训练时刻,肯定会存在它不知道的知识和问题。例如,OpenAI 开发的 ChatGPT 就不能回答 2021 年 9 月之后的问题。此外,由于幻觉的存在,LLM 会显得很有想象力且缺乏事实依据。因此,我们可以将 LLM 比做一个知识渊博且全能的智者,可以干很多事情,但却失忆了,记忆只停留在某一时间之前,而且不能形成新的记忆

而为了让这个智者能够在现代试题考试中得到高分,我们该怎么做呢?答案就是 RAG。

实战数据科学: 如何利用 sklearn 轻松上榜 Kaggle 入门 NLP 竞赛

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

引子

Kaggle 是一个面向数据科学家、机器学习工程师和数据分析师的在线社区和数据科学竞赛平台,上面有很多带有奖励的数据科学竞赛(Competition)以及数据集(Dataset)。Kaggle 社区在数据科学领域非常出名,很多互联网业界大厂也在上面发布有奖竞赛,竞赛金额从几万到百万美元不等。本文介绍的是最近参与的 Kaggle 一个入门 NLP 竞赛,没有现金奖励,但可以学习到 NLP 相关的机器学习知识。

Kaggle Competition

竞赛简介

这个数据科学竞赛是希望竞赛参与者通过给定 Twitter 上的一条推文(Tweet),来判断推文是否是关于一场真实的灾害(Disaster)。下图是某一条推文的情况,推文中有 "ABLAZE"(燃烧的)关键词,预示着该推文是说有房子燃起来了。

Disater Tweet

实战数据分析: 开源的自动化数据探索神器 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。

实战爬虫:如何利用 Webspot 实现自动提取列表页

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

引子

利用爬虫程序抓取列表页是网络数据提取中非常常见的任务之一。对于爬虫工程师来说,如何高效的生成提取规则是非常有必要的,否则就会浪费很多时间在编写爬虫程序 CSS 选择器或 XPath。本文将用一个实际例子来展示如何使用开源工具 Webspot 来实现自动提取列表页。

Webspot

Webspot 是一个旨在自动化网页数据提取的开源项目,目前支持列表页及分页的识别和抓取规则提取,此外还提供了 Web UI 界面让用户可以可视化的查看识别出来的结果,还可以让开发人员利用 API 获取识别结果。

Webspot 安装非常简单,可以参考官方文档中的安装教程,利用 Docker 和 Docker Compose 进行安装。

# clone git repo
git clone https://github.com/crawlab-team/webspot

# start docker containers
docker-compose up -d

浅谈算法:关于智能爬虫的探索

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

浅谈算法:关于智能爬虫的探索

引子

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

如今是人工智能大红大紫的时代,不管是 ChatGPT 还是随之而来的各种智能应用,让许多人看到即将到来的在几年前几乎不可想象的科幻世界。不过,在爬虫领域,人工智能似乎还没有过多涉及。诚然,爬虫作为一项“古老”的技术,在过去 20 多年缔造了搜索引擎、新闻聚合、数据分析等多而又多的技术行业,不过在如今还暂时没有看到明显的技术突破:爬虫工程师还是主要依赖于 XPath、逆向等技术来自动获取网络数据。不过,随着人工智能和机器学习的发展,爬虫技术理论上也可以做到“自动驾驶”。本篇文章,将从多个维度介绍所谓智能爬虫(智能化、自动化数据提取爬虫技术)的现状以及可能的未来发展方向。

爬虫技术现状

爬虫程序是一种自动化的程序,用于从互联网或其他计算机网络上获取数据。它们通常使用自动化数据抓取技术来自动访问网站,并收集、解析和存储网站上的信息。这些信息可以是结构化或非结构化数据。

传统意义上的爬虫技术主要包括以下模块或系统:

  1. 网络请求:对网站或网页发起 HTTP 请求,获取 HTML 等数据;
  2. 网页解析:对 HTML 进行解析,形成结构化的树形结构,并通过 XPath 或 CSS Selector 获取目标数据;
  3. 数据储存:将解析后的结构化数据进行存储,可以是数据库,也可以是文件形式;
  4. URL 管理:负责管理待抓取的URL列表和已经抓取的URL列表,例如分页或列表页的 URL 解析和请求。

爬虫系统 (3)

以上都是基础的爬虫技术模块,对于大型爬虫系统来说,还需要具备任务调度、错误管理、日志管理等生产环境必要模块。笔者的爬虫管理平台 Crawlab 就是用于企业级生产环境爬虫管理平台。另外,针对一些反爬措施,例如验证码或 IP 封锁,通常还需要额外模块,例如验证码识别、IP 代理等。

然而,目前爬虫程序的开发主要集中在网页解析上,这也是非常消耗人力的地方。虽然 HTML 需要解析网页数据,但是不同网站的网页布局、排版、风格、内容各不相同,导致每个网站、网页都需要单独编写解析逻辑,从而大大增加了人工编写成本。虽然一些通用爬虫例如搜索引擎爬虫可以不用编写过多解析逻辑,但这样的爬虫通常都无法聚焦于某些特定的主题数据提取。因此,为了降低人工编写成本,最好是不需要编写或少量编写解析逻辑就可以自动提取网页数据,这也就是智能爬虫的主要目标。

浅谈理论:为什么图论是当今各行各业必备的知识?

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

引子

“若无必要,勿增实体”--奥卡姆剃刀原理

图论(Graph Theory)是被大众严重低估的数学基础理论。它不是研究图像、图片、图表之类的理论,而是一个抽象而简单的数学理论。图论中的(Graph)是一个抽象概念,非常类似于关系网络(Relationship Network),有对应的节点(Node)或顶点(Vertext),节点之间又有关联关系或(Edge)。图论的概念非常简单,就是图、节点、边。本篇文章将简单的介绍一下图论的基础概念,以及图论在真实世界中的应用。(注意!本文不是科学论文,所以不会有枯燥的数学公式,请放心食用)

graph

图论简述

在图论中,有三个重要的概念:

  1. 节点(Node):可以理解为某个实体,例如关系网络中的张三、李四、王五;
  2. (Edge):可以理解为实体间的关系,例如,张三和李四是夫妻,王五是他们儿子;
  3. (Graph):可以理解为所有节点、边的集合,例如张三、李四、王五组成的幸福一家。

从上面的三个基本概念,我们可以推断出节点之间的关系,例如李四的大哥李一,就是王五的舅舅,王五也是他的侄子。

实战数据分析: 利用开源项目 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

浅谈架构:为什么需要在软件项目中考虑复杂度?

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

引子

复杂度是软件工程中永恒的挑战。随着项目规模的增长,复杂度会以指数级的速度增加,如果不加以控制,最终会导致项目的失败。

在软件开发的世界里,复杂度无处不在。从简单的"Hello World"程序到大型分布式系统,复杂度始终伴随着我们的开发过程。作为软件架构师和技术负责人,理解复杂度的本质、来源以及如何管理复杂度,是我们必须掌握的核心技能。