《DrissionPage 网页魔法工坊》Day30|收官综合 Kata:完整项目,自动化采集分页网站信息,保存到文件
工坊第四篇:(收官实战) 功法导语:的毕业礼。
📖 知识点回顾
page.get()访问网页page.eles()批量抓元素,text/attr()提取page.wait.eles()等待加载- 翻页循环 + 判断停止
try/except排障兜底- 文件写入(open/write)保存数据
💡 项目套路(毕业流程) 打开列表页 → 批量抓一页 → 写入文件 → 点下一页 → 等待 → 再抓 → 直到最后一页 → 汇总保存
⚔️ Kata 实战任务(收官项目)
任务需求:
- 导入 ChromiumPage 和 time
- 访问一个分页列表练习页
- 循环翻页采集每页的标题数据
- 用 try/except 兜底,排障不崩溃
- 把所有采集到的数据写入本地文件(txt 或 csv)
- 打印采集汇总(条数、保存路径)
参考代码
from DrissionPage import ChromiumPage
import time
# 打开分页列表练习页
page = ChromiumPage()
page.get("https://the-internet.herokuapp.com/dynamic_content")
print("🌐 已打开分页列表页")
all_data = [] # 汇总全部采集数据
# 收官魔法:循环翻页采集
try:
for page_num in range(1, 4): # 假设最多翻3页
print(f"\n📄 正在采集第 {page_num} 页……")
# 批量抓取当前页列表元素
items = page.eles(".large-10")
for item in items:
text = item.text
if text:
all_data.append(text)
# 查找"下一页"按钮
next_btn = page.ele("a:has-text(Next)")
if not next_btn:
print("⏹️ 没有下一页,停止翻页")
break
# 点击下一页,等待加载
next_btn.click()
time.sleep(1)
except Exception as e:
print(f"❌ 采集过程出现异常:{e}")
# 保存数据到文件
with open("采集结果.txt", "w", encoding="utf-8") as f:
f.write(f"共采集 {len(all_data)} 条数据\n")
f.write("=" * 30 + "\n")
for idx, data in enumerate(all_data, 1):
f.write(f"{idx}. {data}\n")
print(f"\n🎉 采集完成!共抓到 {len(all_data)} 条数据")
print("💾 已保存到文件:采集结果.txt")
运行输出(示意):
🌐 已打开分页列表页
📄 正在采集第 1 页……
📄 正在采集第 2 页……
📄 正在采集第 3 页……
⏹️ 没有下一页,停止翻页
🎉 采集完成!共抓到 12 条数据
💾 已保存到文件:采集结果.txt
💡 说明:实际练习页的列表选择器、"下一页" 写法按目标页面调整即可。跑完后,在代码所在目录会生成 "采集结果.txt",用记事本打开就能看到采集的数据。
🧠 思考题
- 这个项目里,try/except 包住整个循环有什么利弊?你会把哪些操作单独包起来?
- 如果要采集的数据包含多列(标题 + 链接 + 时间),该怎么扩展数据结构,保存成什么样的文件更合适(txt 还是 csv)?
行者孙Python