水晶启幕篇-Day7|工坊实战 Kata:施展魔法抓取网页标题与文本清单

5 次阅读 2026-10-20 14:28

📖 知识点回顾

  1. ChromiumPage() 召唤浏览器水晶球
  2. page.get() 访问网页
  3. page.title / page.url 读取网页信息
  4. page.ele("选择器") 定位元素
  5. 元素.text / 元素.attr("属性") 提取文字与属性

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage,创建 Page 对象
  2. 访问 https://www.baidu.com
  3. 抓取网页标题,打印
  4. 定位页面上的多个链接元素,提取每个链接的文字和地址,组成清单打印
  5. 用 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 循环逐个处理,这是以后批量采集数据的基础写法。

🧠 思考题

  1. page.ele("a") 和 page.eles("a") 返回的结果有什么不同?分别用在什么场景?
  2. 为什么代码里用 if text: 跳过空文字链接?哪些链接可能没有文字?