🗺️ 点击链接
本示例演示获取 DrissionPage 官网首页广告链接并点击😘。
如无意点击广告请跳过本示例。谢谢您的支持🧡。
✅️️ 页面分析
打开网址,按F12
,我们可以看到页面 html 如下:
页面 html 中,广告内容存放在class
为wwads-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()