Clicknium 大更新,支持结构化数据抓取

2022-11-22 19:35:05 +08:00
 heartlocker

Clicknium上线以后收到了不少反馈,其中很多用户在使用 Clicknium 来抓取数据。场景很多比如购物网站的商品名,价格和图片等,甚至就是网页上的一个表格。Clicknium 有提供获取相似数据( Similar elements )的功能,但是只能用来抓取同一类数据,小伙伴们只能分列抓取表格数据着实比较费劲,还得涉及到列之间的匹配问题,确实非常劝退。 所以研究了一下,加上了获取结构化数据的功能( data scraper )。 主要有两个使用场景:

使用方法:

点击 VS code 上的 Capture 按钮会启动 Recorder ,选择 Data Scraper ,Ctrl + Click
Coingecko举例,当需要抓取下面的表格
只需要使用Ctrl+鼠标左键点击表格第一行第一列数据,Clicknium 会自动判断抓取对象为表格,并提示是否抓取全表信息:

选择 Yes 后,获得数据预览,在这个窗口中可以看到抓取到的数据量,修改和删除列,改变列顺序:

  1. 非表格数据 以最常见的京东作为例子: 京东手机页面 抓取商品名、价格和图片,点击 data scraper ,开始抓取元素。采用两行确定一列的模式,操作方式与获取相似元素类似:
  2. 抓取第一列第一个元素
  3. 抓取第一列第二个元素
  4. 添加列,抓取第二列第一个元素
  5. 抓取第二列第二个元素 。。。

Clicknium 自动计算网页结构得到下表:
在预览页面,可以修改列名,信息和选择属性值: 获得结构化数据:

from clicknium import clicknium as cc, locator
import pandas as pd

row = cc.scrape_data(locator.jd.phone)
df = pd.json_normalize(row)
print(df.head(10))

Scrape_data 接口会返回 json 格式的文本数据, 不仅如此,该函数支持传入翻页按钮的 locator 实现自动翻页,翻页支持设置控件和模拟鼠标等方式,等待页面加载,抓取数据条数控制和超时。

    def scrape_data(
        locator: Union[_Locator, str],
        locator_variables: dict = {},
        next_page_button_locator: Union[_Locator, str] = None,
        next_page_button_locator_variables: dict = {},
        next_page_button_by: Union[Literal["default", "mouse-emulation", "control-invocation"], MouseActionBy] = MouseActionBy.Default,
        wait_page_load_time: int = 5,
        max_count: int = -1,
        timeout: int = 30
    ) -> object:

简单录个屏:

https://www.bilibili.com/video/BV1aW4y1W7xQ/?vd_source=196b3ee9ffb643890ce610323e5504e5

https://www.youtube.com/watch?v=1gDGnzrwWLk

一些 updates:

Clicknium 自动操作网页和应用

1920 次点击
所在节点    分享创造
12 条回复
ieliwb
2022-11-23 10:30:23 +08:00
厉害,有中文文档吗
haoxuexiaoyao
2022-11-23 12:34:27 +08:00
安装不上
heartlocker
2022-11-23 12:41:14 +08:00
@ieliwb 目前还没有。 多语言真正做。
heartlocker
2022-11-23 12:41:43 +08:00
@haoxuexiaoyao 目前支持 windows 。 请问你的系统是?
haoxuexiaoyao
2022-11-23 13:12:11 +08:00
MacOS 10.15.7 (19H2026)

CLICKNIUM EXPLORER 这个点击一直加载显示
不知道什么情况
haoxuexiaoyao
2022-11-23 13:42:05 +08:00
window 下安装好了 这个是系统问题么 什么时候可以支持下 mac 系统呢
haoxuexiaoyao
2022-11-23 14:27:34 +08:00
Capture 这个没看到在哪里点击
haoxuexiaoyao
2022-11-23 15:03:30 +08:00
已找到,这个确实不错,继续在研究下
heartlocker
2022-11-23 15:14:26 +08:00
@haoxuexiaoyao mac 有系统依赖 所以底层的技术需要重新写。 跨平台最近正在研究。
haoxuexiaoyao
2022-11-23 15:38:44 +08:00
希望早点支持跨平台,这个可以模拟人工操作鼠标点击拖动等操作么
heartlocker
2022-11-23 16:47:59 +08:00
@haoxuexiaoyao 可以。
heartlocker
2022-11-24 14:44:58 +08:00
@haoxuexiaoyao 跨平台要重写比较多的内容。 正在研究。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/897167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX