行者孙Python

融灵篇-Day30|综合 Kata:完整项目,自动化采集分页网站信息,保存到文件

《DrissionPage 网页魔法工坊》Day30|收官综合 Kata:完整项目,自动化采集分页网站信息,保存到文件

工坊第四篇:(收官实战) 功法导语:的毕业礼。

📖 知识点回顾

  1. page.get() 访问网页
  2. page.eles() 批量抓元素,text/attr() 提取
  3. page.wait.eles() 等待加载
  4. 翻页循环 + 判断停止
  5. try/except 排障兜底
  6. 文件写入(open/write)保存数据

💡 项目套路(毕业流程) 打开列表页 → 批量抓一页 → 写入文件 → 点下一页 → 等待 → 再抓 → 直到最后一页 → 汇总保存

⚔️ Kata 实战任务(收官项目)

任务需求:

  1. 导入 ChromiumPage 和 time
  2. 访问一个分页列表练习页
  3. 循环翻页采集每页的标题数据
  4. 用 try/except 兜底,排障不崩溃
  5. 把所有采集到的数据写入本地文件(txt 或 csv)
  6. 打印采集汇总(条数、保存路径)

参考代码

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",用记事本打开就能看到采集的数据。

🧠 思考题

  1. 这个项目里,try/except 包住整个循环有什么利弊?你会把哪些操作单独包起来?
  2. 如果要采集的数据包含多列(标题 + 链接 + 时间),该怎么扩展数据结构,保存成什么样的文件更合适(txt 还是 csv)?
‹ 返回目录
🏠首页 Python 📦资源 👤关于我