Python自动化Clicknium指南2

Clicknium使用指南1 中介绍了Clicknium的基本概念和使用方法。本章将更深入的介绍Clicknium的高级功能。

1. 获取相似元素(Similar elements)

我们经常需要处理网页或应用中大量相似的元素,例如List和Grid中的UI元素。 依次抓取这些元素会产生大量的locator,显然不是一个好方法。 有用户甚至提问,将同一类locator放在了一个文件夹下,怎么能遍历locator文件夹。 当然,采用之前提到了参数化locator也是一种做法。但是,一方面你需要分析是用哪个属性和什么值来遍历UI元素,另一方面,参数的范围很可能不得而知,尤其随着应用越来越复杂,越来越多采用动态加载的方式导致要抓取的UI元素总量无法预测。 通常我们会使用 BeautifulSoup这类的库来解析网站的HTML结构,由于网站的样式越来越复杂,抓取的内容并不会总是在同一个结构中, 每个Item可能被多层div或者其他元素包裹,所以在解析时,我们需要分析HTML的结构并构建一个算法找所有元素的最小公共节点,并且遍历该结构。 这一过程确实比较花时间, 同时也是一个能被算法解决的问题。

Clicknium Recorder中,包含了抓取相似元素的功能。 用户通过抓取两个相似(同一层级)的元素, Clicknium内置算法自动解析HTML结构,并计算最小公共节点和层级信息 ,以实现抓取相似元素。 如果计算出来的元素并不是用户想要的,可进行第三次抓取,算法将通过三个UI元素的信息,重新计算抓取路径。

1.1 使用方法:

以Opensea中Okay Bear图片为例,这是一个典型的Grid结构:

a. 点击VS Code 插件中的Capture 按钮,启动录制器:

b. 点击录制器中的Similar elements:

​c.  Ctrl +鼠标单击抓取第一和第二个元素:

​抓取到相似元素对应的locator后, 调用find_elements返回一个UI element List(find_element返回单个UI element。

Sample code:

使用get_property获取图片地址后,通过request下载图片,并通过send_hotkey触发PgDn下滑加载图片。

import requests
from time import sleep
from clicknium import clicknium as cc, locator
def main():
    cc.chrome.open("https://opensea.io/collection/okay-bears")
    nftDic = {}

    while True:
        newDic = {}
        finish = True
        sleep(4)
        nfts = cc.find_elements(locator.sample.opensea.img_okay_bear)
        for nft in nfts:
            src = nft.get_property("src")
            name = nft.get_property("alt")
            if name not in nftDic:
                newDic[name]=src
                finish = False

        for key,value in newDic.items():
            r = requests.get(value)
            print("Downloading:"+ key)
            imagePath
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值