📖 知识点
1. 提取元素文字
元素里的可见文字,用 .text 读取:
ele = page.ele("元素选择器")
text = ele.text # 提取元素里的文字
print(text)
.text拿到的是元素里人眼可见的文字,纯净无 HTML 标签。
2. 提取元素属性
元素身上的各种属性(如链接地址、图片地址、class 名),用 .attr("属性名"):
# 提取链接的 href 属性(跳转地址)
href = ele.attr("href")
# 提取图片的 src 属性(图片地址)
img_src = ele.attr("src")
常用属性名:href(链接)、src(图片 / 资源地址)、class(类名)、id(ID)、name(名称)。
3. 一步定位 + 提取 连贯写法
# 一步到位:定位图片元素并取src属性
logo_src = page.ele("#s_lg_img").attr("src")
# 一步到位:定位链接元素并取文字
link_text = page.ele("a").text
完整示例
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get("https://www.baidu.com")
# 定位logo元素
logo = page.ele("#s_lg_img")
print("logo的文字:", logo.text) # 图片通常无文字
print("logo的src属性:", logo.attr("src")) # 图片地址
# 定位第一个链接,提取文字和地址
first_link = page.ele("a")
print("第一个链接的文字:", first_link.text)
print("第一个链接的地址:", first_link.attr("href"))
⚠️ 易错提醒
.text不加括号;.attr("xxx")要加括号并传入属性名- 如果元素没有该属性,
.attr()返回None- 图片元素一般没有文字,
.text可能返回空
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage,访问百度
- 定位搜索按钮
#su,提取它的value属性(按钮文字)和 class - 定位第一个
<a>链接,提取它的文字 text 和 href 属性 - 打印全部提取结果
参考代码
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get("https://www.baidu.com")
# 定位搜索按钮,提取属性
search_btn = page.ele("#su")
print("🔘 搜索按钮的value属性:", search_btn.attr("value"))
print("🔘 搜索按钮的class属性:", search_btn.attr("class"))
# 定位第一个链接,提取文字和地址
first_link = page.ele("a")
print("🔗 第一个链接的文字:", first_link.text)
print("🔗 第一个链接的href:", first_link.attr("href"))
运行输出(内容以实际网页为准):
🔘 搜索按钮的value属性: 百度一下
🔘 搜索按钮的class属性: btn self-btn bg s_btn
🔗 第一个链接的文字: 新闻
🔗 第一个链接的href: https://news.baidu.com
🧠 思考题
- 提取图片链接该用
attr("href")还是attr("src")?为什么? .text和.attr()返回的都是字符串吗?如果元素没有某个属性会得到什么?