Clicknium 大更新,支持结构化数据抓取 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
heartlocker
V2EX    分享创造

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

  •  
  •   heartlocker 2022-11-22 19:35:05 +08:00 2577 次点击
    这是一个创建于 1053 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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:

    • 由于 Chrome manifest V2 马上要过期了,最近升级了 Manifest V3
    • 支持对 tab 和 UI 组件 native 方式截图
    • 最近会开始研究跨平台和开源
    • 有空的话研究一下写一个 Pycharm 的 plugin

    Clicknium 自动操作网页和应用

    12 条回复    2022-11-24 14:44:58 +08:00
    ieliwb
        1
    ieliwb  
       2022-11-23 10:30:23 +08:00
    厉害,有中文文档吗
    haoxuexiaoyao
        2
    haoxuexiaoyao  
       2022-11-23 12:34:27 +08:00
    安装不上
    heartlocker
        3
    heartlocker  
    OP
       2022-11-23 12:41:14 +08:00
    @ieliwb 目前还没有。 多语言真正做。
    heartlocker
        4
    heartlocker  
    OP
       2022-11-23 12:41:43 +08:00
    @haoxuexiaoyao 目前支持 windows 。 请问你的系统是?
    haoxuexiaoyao
        5
    haoxuexiaoyao  
       2022-11-23 13:12:11 +08:00
    MacOS 10.15.7 (19H2026)

    CLICKNIUM EXPLORER 这个点击一直加载显示
    不知道什么情况
    haoxuexiaoyao
        6
    haoxuexiaoyao  
       2022-11-23 13:42:05 +08:00
    window 下安装好了 这个是系统问题么 什么时候可以支持下 mac 系统呢
    haoxuexiaoyao
        7
    haoxuexiaoyao  
       2022-11-23 14:27:34 +08:00
    Capture 这个没看到在哪里点击
    haoxuexiaoyao
        8
    haoxuexiaoyao  
       2022-11-23 15:03:30 +08:00
    已找到,这个确实不错,继续在研究下
    heartlocker
        9
    heartlocker  
    OP
       2022-11-23 15:14:26 +08:00
    @haoxuexiaoyao mac 有系统依赖 所以底层的技术需要重新写。 跨平台最近正在研究。
    haoxuexiaoyao
        10
    haoxuexiaoyao  
       2022-11-23 15:38:44 +08:00
    希望早点支持跨平台,这个可以模拟人工操作鼠标点击拖动等操作么
    heartlocker
        11
    heartlocker  
    OP
       2022-11-23 16:47:59 +08:00
    @haoxuexiaoyao 可以。
    heartlocker
        12
    heartlocker  
    OP
       2022-11-24 14:44:58 +08:00
    @haoxuexiaoyao 跨平台要重写比较多的内容。 正在研究。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1210 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:26 PVG 01:26 LAX 10:26 JFK 13:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86