破障篇-Day24|工坊实战 Kata:翻页魔法,自动分页采集列表数据

3 次阅读 2026-10-20 16:45

📖 知识点回顾

  1. page.get() 访问网页
  2. page.eles() 批量获取元素
  3. 元素.text / attr() 提取数据
  4. page.ele() + click() 点击 "下一页"
  5. page.wait.eles() 等待加载
  6. time.sleep() 稳定节奏

💡 翻页采集套路 进首页 → 批量抓一页 → 点 "下一页" → 等待加载 → 再抓 → 循环直到最后一页 → 汇总保存

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage 和 time
  2. 访问一个分页列表的练习页(如 https://the-internet.herokuapp.com/dynamic_content 类,或你自己的演示列表页)
  3. 循环翻页采集:
    • 批量抓取当前页列表元素文字
    • 点击 "下一页" 按钮
    • 等待页面加载
    • 判断是否还能继续翻(没有下一页就停止)
  4. 汇总所有采集到的数据到列表
  5. 打印汇总结果

参考代码

from DrissionPage import ChromiumPage
import time

page = ChromiumPage()
page.get("https://the-internet.herokuapp.com/dynamic_content")
print("🌐 已打开分页列表页")

all_data = []   # 汇总所有页数据

# 翻页魔法:循环采集多页
for page_num in range(1, 4):   # 假设最多翻3页
    print(f"\n📄 正在采集第 {page_num} 页……")

    # 批量抓取当前页的列表元素
    items = page.eles(".large-10")   # 以实际选择器为准
    for item in items:
        all_data.append(item.text)

    # 查找"下一页"按钮
    next_btn = page.ele("a:has-text(Next)")
    if not next_btn:
        print("⏹️ 没有下一页了,停止翻页")
        break

    # 点击下一页,等待加载
    next_btn.click()
    time.sleep(1)

# 汇总输出
print(f"\n🎉 采集完成,共抓到 {len(all_data)} 条数据")
for idx, data in enumerate(all_data, 1):
    print(f"{idx}. {data}")

运行输出(示意):

🌐 已打开分页列表页

📄 正在采集第 1 页……
📄 正在采集第 2 页……
📄 正在采集第 3 页……
⏹️ 没有下一页了,停止翻页

🎉 采集完成,共抓到 12 条数据
1. ...
2. ...
...

💡 说明:实际练习页的列表选择器、"下一页" 按钮写法可能不同,按你目标页面的实际情况替换即可。核心是循环抓取→翻页→判断停止这套模式。

🧠 思考题

  1. 翻页采集的循环逻辑里,怎么判断 "已经是最后一页、该停下来了"?
  2. 如果把采集到的数据进一步保存到文件(如 txt、csv),思路是什么?加在哪一步?