📖 知识点回顾
ChromiumPage()召唤浏览器水晶球page.get()访问网页page.title/page.url读取网页信息page.ele("选择器")定位元素元素.text/元素.attr("属性")提取文字与属性
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage,创建 Page 对象
- 访问
https://www.baidu.com - 抓取网页标题,打印
- 定位页面上的多个链接元素,提取每个链接的文字和地址,组成清单打印
- 用
page.eles("a")一次性获取多个链接元素(eles 带 s 表示复数,返回列表)
💡 补充新咒:
page.eles()一次性找多个元素,返回列表
page.ele("a"):只找第一个page.eles("a"):找全部,返回元素列表,可用循环遍历
参考代码
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get("https://www.baidu.com")
# 1. 抓取网页标题
print("📖 网页标题:", page.title)
print("=" * 30)
# 2. 一次性获取多个链接元素
link_list = page.eles("a")
print(f"🎯 一共找到 {len(link_list)} 个链接元素")
# 3. 遍历链接,提取文字和地址,组成清单
print("===== 链接清单 =====")
for link in link_list:
text = link.text
href = link.attr("href")
# 跳过空文字链接,避免刷屏
if text:
print(f"🔗 文字:{text} | 地址:{href}")
运行输出(内容以实际网页为准,示意):
📖 网页标题: 百度一下,你就知道
==============================
🎯 一共找到 68 个链接元素
===== 链接清单 =====
🔗 文字:新闻 | 地址:https://news.baidu.com
🔗 文字:hao123 | 地址:https://www.hao123.com
🔗 文字:地图 | 地址:https://map.baidu.com
🔗 文字:贴吧 | 地址:https://tieba.baidu.com
🔗 文字:更多 | 地址:https://www.baidu.com/more/
...
💡 小技巧
page.eles()返回的是列表,可以用len()统计数量,用 for 循环逐个处理,这是以后批量采集数据的基础写法。
🧠 思考题
page.ele("a")和page.eles("a")返回的结果有什么不同?分别用在什么场景?- 为什么代码里用
if text:跳过空文字链接?哪些链接可能没有文字?