DrissionPage 是一个基于 python 的网页自动化工具,类似Selenium,可以操控浏览器进行一些自动测试,也可以直接发请求;
官网:DrissionPage官网 (那个浏览器黑白图标一眼看去还以为是只哭泣的小猪,哈哈)
官网的使用文档比较详细,功能也很多;
使用pip安装:pip install DrissionPage
使用Chromium简单demo测试:
#!/usr/bin/env python3
# coding = utf-8from DrissionPage import Chromium, ChromiumOptions
from DrissionPage.common import Actionspath = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
co = ChromiumOptions().set_browser_path(path) # 设置下浏览器启动路径chrom = Chromium(co)tab1 = chrom.latest_tab
tab1.get('https://www.baidu.com/')es = tab1.eles('tag:span@class=title-content-title') # 百度热搜条目列表
for e in es:print(e.text)
es[1].click() # 点击第二个百度热搜tab = chrom.latest_tab
div = tab.ele('tag:div@class=FYB_RD') # 右侧热搜总div
d = div.children()[2] # 30条热搜(15显示15隐藏)
d = d.children()[0] # 前15条显示的热搜总div
d = d.children() # 15条列表
Actions(tab) # 绑定动画
for x in d:a = x.ele('tag:a')tab.actions.move_to(a, duration=0.2) # 鼠标从第一个热搜移动到最后一个tab.listen.start('baidu.com/')
kw = tab.ele('#kw') # 定位搜索输入框
kw.clear().input('hello world') # 清空并输入关键字hello world
tab.ele('#su').click() # 点击百度一下搜索
tab.listen.wait(20, timeout=3, fit_count=False, raise_err=False) # 等待请求数据加载完成
div = tab.ele('#content_left') # 搜索结果总列表div
a = div.eles('tag:h3').filter_one.text('百度百科') # 找到第一个百度百科的标题
a = a.ele('tag:a') # 定位到标题的链接
a.click() # 点击hello world的百度百科
chrom.close_tabs(chrom.latest_tab, True) # 关闭除了最后一个tab之外的全部标签
运行结果:
drissionpage测试
也可以使用SessionPage直接发送请求不通过浏览器,没有网页那些点击等操作:
from DrissionPage import SessionPagepage = SessionPage()
page.get('https://www.baidu.com/')titles = page.eles('tag:span@class=title-content-title')
for title in titles:print(title.text)
运行结果: