跳到主要内容

🗺️ 点击链接


本示例演示获取 DrissionPage 官网首页广告链接并点击😘。

如无意点击广告请跳过本示例。谢谢您的支持🧡。

✅️️ 页面分析

网址:https://DrissionPage.cn

打开网址,按F12,我们可以看到页面 html 如下:

页面 html 中,广告内容存放在classwwads-cn wwads-horizontal<div>元素中,通过搜索可以知道,这个元素是页面唯一的。

并且点击<div>中的图片可以打开广告页面。


✅️️ 示例代码

您可以把以下代码复制到编辑器,可直接执行看到运行结果。

from DrissionPage import Chromium

# 启动或接管浏览器,并获取标签页对象
tab = Chromium().latest_tab
# 跳转到目标网址
tab.get('https://DrissionPage.cn')
# 在tab对象下查找class为wwads-cn wwads-horizontal的元素,然后在里面找第一个img元素
ele = tab.ele('.wwads-cn wwads-horizontal').ele('tag:img')
if ele:
tab2 = ele.click.for_new_tab() # 如果找到元素,点击并获取新tab对象
tab2.set.activate()
ele2 = tab2.ele('确认访问', timeout=5) # 在新标签页查找“确认访问”按钮
if ele2: # 如果找到,就点击它
ele2.wait(.5).click()
else:
print('支持开源作者,请关闭广告屏蔽功能,谢谢。')

✅️️ 示例详解

我们逐行解读代码:

from DrissionPage import Chromium

↑ 首先,我们导入用于控制浏览器的类Chromium

tab = Chromium().latest_tab

↑ 接下来,我们创建一个Chromium对象,用于连接浏览器,并用latest_tab获取一个标签页对象。

tab.get('https://DrissionPage.cn')

get()方法用于访问参数中的网址。它会等待页面完全加载,再继续执行后面的代码。 您也可以修改等待策略,如等待 DOM 加载而不等待资源下载,就停止加载,这将在后面的章节说明。

ele = tab.ele('.wwads-cn wwads-horizontal').ele('tag:img', timeout=2)

ele()方法用于查找元素,它返回一个ChromiumElement对象,用于操作元素。

'.wwads-cn wwads-horizontal'是定位符文本,.意思是按class属性查找元素(完整匹配)。

这行里执行了两次查找,第一次获取<div>元素,再调用这个元素的ele()方法,在其内部查找<img>元素。

值得一提的是,ele()内置了等待,如果元素未加载,它会执行等待,直到元素出现或到达时限。默认超时为 10 秒,这里设定为 2 秒。

if ele:

↑ 用if可以直接判断是否找到指定元素。

    tab2 = ele.click.for_new_tab()

↑ 调用元素click.for_new_tab()方法对其执行点击。

此次点击预期会出现新标签页,因此使用click_for_new_tab()同时获取新标签页对象tab2

    tab2.set.activate()

↑ 将新标签页激活到前台,即使不激活其实也可以操作。

    ele2 = tab2.ele('确认访问', timeout=5)
if ele2: # 如果找到,就点击它
ele2.wait(.5).click()

↑ 使用新标签页对象查找它里面包含'确认访问'文本的元素,查找超时时间为 5 秒。

如果找到,等待 0.5 秒后点击它。