
Clicknium上线以后收到了不少反馈,其中很多用户在使用 Clicknium 来抓取数据。场景很多比如购物网站的商品名,价格和图片等,甚至就是网页上的一个表格。Clicknium 有提供获取相似数据( Similar elements )的功能,但是只能用来抓取同一类数据,小伙伴们只能分列抓取表格数据着实比较费劲,还得涉及到列之间的匹配问题,确实非常劝退。 所以研究了一下,加上了获取结构化数据的功能( data scraper )。 主要有两个使用场景:
点击 VS code 上的 Capture 按钮会启动 Recorder ,选择 Data Scraper ,Ctrl + Click 
以 Coingecko举例,当需要抓取下面的表格 
只需要使用Ctrl+鼠标左键点击表格第一行第一列数据,Clicknium 会自动判断抓取对象为表格,并提示是否抓取全表信息:
选择 Yes 后,获得数据预览,在这个窗口中可以看到抓取到的数据量,修改和删除列,改变列顺序:

抓取商品名、价格和图片,点击 data scraper ,开始抓取元素。采用两行确定一列的模式,操作方式与获取相似元素类似:
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:
1 ieliwb Nov 23, 2022 厉害,有中文文档吗 |
2 haoxuexiaoyao Nov 23, 2022 安装不上 |
3 heartlocker OP @ieliwb 目前还没有。 多语言真正做。 |
4 heartlocker OP @haoxuexiaoyao 目前支持 windows 。 请问你的系统是? |
5 haoxuexiaoyao Nov 23, 2022 MacOS 10.15.7 (19H2026) CLICKNIUM EXPLORER 这个点击一直加载显示 不知道什么情况 |
6 haoxuexiaoyao Nov 23, 2022 window 下安装好了 这个是系统问题么 什么时候可以支持下 mac 系统呢 |
7 haoxuexiaoyao Nov 23, 2022 Capture 这个没看到在哪里点击 |
8 haoxuexiaoyao Nov 23, 2022 已找到,这个确实不错,继续在研究下 |
9 heartlocker OP @haoxuexiaoyao mac 有系统依赖 所以底层的技术需要重新写。 跨平台最近正在研究。 |
10 haoxuexiaoyao Nov 23, 2022 希望早点支持跨平台,这个可以模拟人工操作鼠标点击拖动等操作么 |
11 heartlocker OP @haoxuexiaoyao 可以。 |
12 heartlocker OP @haoxuexiaoyao 跨平台要重写比较多的内容。 正在研究。 |