Clicknium上线以后收到了不少反馈,其中很多用户在使用 Clicknium 来抓取数据。场景很多比如购物网站的商品名,价格和图片等,甚至就是网页上的一个表格。Clicknium 有提供获取相似数据( Similar elements )的功能,但是只能用来抓取同一类数据,小伙伴们只能分列抓取表格数据着实比较费劲,还得涉及到列之间的匹配问题,确实非常劝退。 所以研究了一下,加上了获取结构化数据的功能( data scraper )。 主要有两个使用场景:
点击 VS code 上的 Capture 按钮会启动 Recorder ,选择 Data Scraper ,Ctrl + Click
以 Coingecko举例,当需要抓取下面的表格
只需要使用Ctrl+鼠标左键
点击表格第一行第一列
数据,Clicknium 会自动判断抓取对象为表格,并提示是否抓取全表信息:
选择 Yes 后,获得数据预览,在这个窗口中可以看到抓取到的数据量,修改和删除列,改变列顺序:
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 2022-11-23 10:30:23 +08:00
厉害,有中文文档吗
|
2
haoxuexiaoyao 2022-11-23 12:34:27 +08:00
安装不上
|
3
heartlocker OP @ieliwb 目前还没有。 多语言真正做。
|
4
heartlocker OP @haoxuexiaoyao 目前支持 windows 。 请问你的系统是?
|
5
haoxuexiaoyao 2022-11-23 13:12:11 +08:00
MacOS 10.15.7 (19H2026)
CLICKNIUM EXPLORER 这个点击一直加载显示 不知道什么情况 |
6
haoxuexiaoyao 2022-11-23 13:42:05 +08:00
window 下安装好了 这个是系统问题么 什么时候可以支持下 mac 系统呢
|
7
haoxuexiaoyao 2022-11-23 14:27:34 +08:00
Capture 这个没看到在哪里点击
|
8
haoxuexiaoyao 2022-11-23 15:03:30 +08:00
已找到,这个确实不错,继续在研究下
|
9
heartlocker OP @haoxuexiaoyao mac 有系统依赖 所以底层的技术需要重新写。 跨平台最近正在研究。
|
10
haoxuexiaoyao 2022-11-23 15:38:44 +08:00
希望早点支持跨平台,这个可以模拟人工操作鼠标点击拖动等操作么
|
11
heartlocker OP @haoxuexiaoyao 可以。
|
12
heartlocker OP @haoxuexiaoyao 跨平台要重写比较多的内容。 正在研究。
|