1 Star 0 Fork 9

一叶知秋/exotic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Exotic README

English | 简体中文 | 中国镜像

Exotic (代表奇异之星 - Exotic Star) 是 PulsarR 的专业版,包含升级后的 PulsarR 服务器、一组顶级电商站点抓取实例、高级 AI 支持的自动提取小程序。

不用再写爬虫了。Exotic 从网站学习,自动生成所有提取规则,将 Web 当作数据库进行查询,完整精确地交付规模化的 Web 数据:

  1. 步骤1:使用高级人工智能自动提取网页中的每个字段,并生成提取 SQL

  2. 步骤2:测试 SQL,并在必要时改进它们以匹配前端业务需求

  3. 步骤3:在 Web 控制台中创建调度规则,以连续运行 SQL 并下载所有 Web 数据,从而推动您的业务向前发展

最受欢迎的网站已经有几十个 抓取案例,我们正在不断增加更多的案例。

主要特性

  • 网络爬虫:各种数据采集模式,包括浏览器渲染、ajax数据采集、普通协议采集等

  • RPA:机器人流程自动化、模仿人类行为、采集单网页应用程序或执行其他有价值的任务

  • 简洁的 API:一行代码抓取,或者一条 SQL 将整个网站栏目变成表格

  • X-SQL:扩展 SQL 来管理 Web 数据:网络爬取、数据采集、Web 内容挖掘、Web BI

  • Web UI:一个非常简单但功能强大的 Web UI,用于管理爬虫规则并下载数据

  • 机器学习:使用自监督的机器学习自动提取网页中的每个字段,并生成提取规则和SQL

  • 爬虫隐身:浏览器驱动隐身,IP 轮换,隐私上下文轮换,永远不会被屏蔽

  • 高性能:高度优化,单机并行渲染数百页而不被屏蔽

  • 低成本:每天抓取 100,000 个浏览器渲染的电子商务网页,或 n * 10,000,000 个数据点,仅需要 8 核 CPU/32G 内存

  • 数据质量保证:智能重试、精准调度、Web 数据生命周期管理

  • 大规模采集:完全分布式,专为大规模数据采集而设计

  • 大数据支持:支持各种后端存储:本地文件/MongoDB/HBase/Gora

  • 日志和指标:密切监控并记录每个事件

  • [即将发布] Information Extraction:自动学习网页数据模式,以显著的精度自动提取网页中的每一个字段

系统要求

  • Memory 4G+

  • Maven 3.2+

  • Java 11 JDK 最新版本

  • java and jar on the PATH

  • Google Chrome 90+

下载

下载最新的可执行 jar 包:

wget http://static.platonic.fun/repo/ai/platon/exotic/exotic-standalone.jar

从源代码构建

如果 maven 版本号是 3.8.1 或以上,需要在 .m2/settings.xml 文件中加入如下代码:

<mirrors>
    <mirror>
        <id>maven-default-http-blocker</id>
        <mirrorOf>dummy</mirrorOf>
        <name>Dummy mirror to override default blocking mirror that blocks http</name>
        <url>http://0.0.0.0/</url>
    </mirror>
</mirrors>
git clone https://github.com/platonai/exotic.git
cd exotic
mvn clean && mvn
cd exotic-standalone/target/

运行独立服务器并打开 Web 控制台

# Linux:
java -jar exotic-standalone*.jar serve

# Windows:
java -jar exotic-standalone[-the-actual-version].jar serve

注意:如果您在 Windows 上使用 CMD 或 PowerShell,您可能需要删除通配符 * 并使用 jar 包的全名。

如果 Exotic 在 GUI 模式下运行,Web 控制台应该在几秒钟内打开,或者您可以手动打开它:

执行自动提取

我们可以使用 harvest 命令,使用无监督的机器学习从一组项目页面中学习:

java -jar exotic-standalone*.jar harvest https://shopee.sg/Computers-Peripherals-cat.11013247 -diagnose -refresh

上面命令中的URL应该是一个门户URL,比如产品列表页面的URL。

Exotic 访问入口网址,找出最佳的项目网页链接集,获取项目网页,然后从中学习。

下面是一个电子商务网站使用无监督机器学习自动提取结果的快照:

Auto Extract

每个字段的最佳 CSS 选择器都是自动生成的,您可以以传统方式使用这些规则进行 Web 抓取:

Auto Generated Selectors

以及生成的SQL:

Auto Generated SQL

请注意,本演示中的网站使用了 CSS 混淆技术,因此 CSS 选择器很难阅读并且经常改变。除了基于机器学习的解决方案之外,没有其他有效的技术来解决这个问题。

完整的代码可以在 这里 找到。

使用生成的SQL抓取页面:

Harvest 命令使用无监督的机器学习自动提取字段,并为所有可能的字段和提取SQL生成最佳 css 选择器。我们可以使用 sql 命令来执行 SQL。

# Note: remove the wildcard `*` and use the full name of the jar on Windows
java -jar exotic-standalone*.jar sql "
select
    dom_first_text(dom, 'div.-Esc+w.card.product-briefing div.HLQqkk div.flex-column.imEX5V span') as T1C2,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.W2tD8- div.MrYJVA.Ga-lTj') as T1C3,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.W2tD8- div.MrYJVA') as T1C4,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.W2tD8- div.Wz7RdC') as T1C5,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.W2tD8- div._45NQT5') as T1C6,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.W2tD8- div.Cv8D6q') as T1C7,
    dom_first_text(dom, 'div.-Esc+w.card.product-briefing div.HLQqkk div.imEX5V div.pmmxKx') as T1C8,
    dom_first_text(dom, 'div.-Esc+w.card.product-briefing div.HLQqkk div.imEX5V div.mini-vouchers__label') as T1C9,
    dom_first_text(dom, 'div.imEX5V div.PMuAq5 div.flex-no-overflow span.voucher-promo-value.voucher-promo-value--absolute-value') as T1C10,
    dom_first_text(dom, 'div.HLQqkk div.imEX5V div.PMuAq5 label._0b8hHE') as T1C11,
    dom_first_text(dom, 'div.PMuAq5 div.MGNOw3.hInOdW div.dHS5e4.xIMb1R div.LgUWja') as T1C12,
    dom_first_text(dom, 'div.PMuAq5 div.MGNOw3.hInOdW div.dHS5e4.xIMb1R div.Nd79Ux') as T1C13,
    dom_first_text(dom, 'div.MGNOw3.hInOdW div.dHS5e4.xIMb1R div.flex-row div.NPdOlf') as T1C14,
    dom_first_text(dom, 'div.imEX5V div.PMuAq5 div.-+gikn.hInOdW label._0b8hHE') as T1C15,
    dom_first_text(dom, 'div.PMuAq5 div.-+gikn.hInOdW div.items-center button.product-variation') as T1C16,
    dom_first_text(dom, 'div.PMuAq5 div.-+gikn.hInOdW div.items-center button.product-variation') as T1C17,
    dom_first_text(dom, 'div.imEX5V div.PMuAq5 div.-+gikn.hInOdW div._0b8hHE') as T1C18,
    dom_first_text(dom, 'div.PMuAq5 div.-+gikn.hInOdW div.G2C2rT.items-center div') as T1C19,
    dom_first_text(dom, 'div.flex-column.imEX5V div.vdf0Mi div.OozJX2 span') as T1C20,
    dom_first_text(dom, 'div.HLQqkk div.flex-column.imEX5V div.vdf0Mi button.btn.btn-solid-primary.btn--l.GfiOwy') as T1C21,
    dom_first_text(dom, 'div.-Esc+w.card.product-briefing div.HLQqkk div.flex-column.imEX5V span.zevbuo') as T1C22,
    dom_first_text(dom, 'div.-Esc+w.card.product-briefing div.HLQqkk div.flex-column.imEX5V span') as T1C23
from load_and_select('https://shopee.sg/(Local-Stock)-(GEBIZ-ACRA-REG)-PLA-3D-Printer-Filament-Standard-Colours-Series-1.75mm-1kg-i.182524985.8326053759?sp_atk=3afa9679-22cb-4c30-a1db-9d271e15b7a2&xptdk=3afa9679-22cb-4c30-a1db-9d271e15b7a2', 'div.page-product');
"

探索可执行 jar 包的其他能力

直接运行可执行的 jar 包来获得帮助,以探索所提供的更多功能:

# Note: remove the wildcard `*` and use the full name of the jar on Windows
java -jar exotic-standalone*.jar

这个命令将打印帮助信息和最有用的例子。

Q & A

Q: 如何使用代理?

A: 点击 这里 查看。

空文件

简介

PulsarR 专业版,包含一批顶尖站点演示,命令行客户端和 Web 客户端,基于高级人工智能的自动提取小程序等。 展开 收起
Kotlin
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Kotlin
1
https://gitee.com/GoFireStar/exotic.git
git@gitee.com:GoFireStar/exotic.git
GoFireStar
exotic
exotic
main

搜索帮助