【Web-Crawler-Steamdt】以项目文件steamdt_crawler.py学习python爬虫

【Web-Crawler-Steamdt】以项目文件steamdt_crawler.py学习python爬虫

https://github.com/stefanokratzdisteln-hash/Web-Crawler-Steamdt

在这里插入图片描述

以下是 steamdt_crawler.py 中的主要知识点整理,适合有 Python 基础的学习者学习爬虫:


一、爬虫基础与工具选择

1. 动态 vs 静态网页爬取

  • Playwright:用于处理 JavaScript 动态渲染的网页(现代 SPA 应用)
  • Requests + BeautifulSoup:用于静态 HTML 页面(传统网页)
  • 代码中通过 PLAYWRIGHT_AVAILABLE 判断并自动降级

2. 环境与编码处理

# Windows 控制台编码修复if sys.platform =='win32': sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
  • 解决 Windows 下中文乱码问题
  • 使用 io.TextIOWrapper 重定向标准输出编码

二、Playwright 爬虫框架

1. 基本使用流程

with sync_playwright().start()as playwright: browser = playwright.chromium.launch(headless=True) page = browser.new_page() page.goto(url)
  • 无头浏览器headless=True
  • 模拟用户代理:设置 user_agent
  • 页面等待策略wait_for_load_state('networkidle')

2. 元素定位与交互

  • page.inner_text('body'):获取页面文本
  • page.query_selector_all('tr, div'):CSS 选择器查找元素
  • page.evaluate():执行 JavaScript 代码

三、数据提取与解析

1. 正则表达式(re 模块)

  • 提取数字模式:r'([\d,]+\.\d+)'
  • 提取百分比:r'([+-]?\d+\.?\d*%)'
  • 提取带单位的值:r'([\d,]+\.\d+[万亿])'

2. 数据清洗与验证

def_extract_numeric_candidates(self, text:str)-> List[str]:# 过滤干扰项(如百分比)if'%'in before or'%'in after:continue
  • 避免提取到环比数据等干扰项
  • 通过位置判断数据类型

3. 多级板块数据解析

  • 板块结构:热门板块 → 一级板块 → 二级板块 → 三级板块
  • 数据格式:排名 + 名称 + 涨跌幅
  • 去重机制:使用 set() 避免重复数据

四、错误处理与调试

1. 异常捕获

try:# 可能出错的操作except PlaywrightTimeoutError:print("[WARNING] 页面加载超时")except Exception as e:print(f"[ERROR] 其他错误: {e}") traceback.print_exc()
  • 区分不同类型的异常
  • 使用 traceback.print_exc() 打印完整堆栈

2. 调试信息输出

debug_filename =f"debug_page_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"withopen(debug_filename,'w', encoding='utf-8')as f: f.write(page_text)
  • 将页面内容保存到文件,便于分析网页结构
  • 使用时间戳命名,避免覆盖

五、数据存储与管理

1. JSON 格式存储

withopen(filename,'w', encoding='utf-8')as f: json.dump(data, f, ensure_ascii=False, indent=2)
  • ensure_ascii=False:保留中文字符
  • indent=2:格式化输出,便于阅读

2. 文件管理

old_files = glob.glob("steamdt_data_*.json") old_files.sort(key=os.path.getmtime, reverse=True)
  • 使用 glob 查找匹配的文件
  • 按修改时间排序,保留最新文件
  • 自动清理旧数据文件

六、代码结构与设计模式

1. 面向对象编程

  • 类封装SteamDTCrawler 类封装所有爬虫功能
  • 上下文管理器__enter____exit__ 管理资源
  • 类型注解:提高代码可读性和 IDE 提示

2. 模块化设计

  • 分离关注点
    • extract_market_stats():提取大盘数据
    • extract_sections():提取板块数据
    • save_to_json():保存数据
  • 辅助方法_extract_numeric_candidates() 等私有方法

七、高级技巧与最佳实践

1. 多策略数据提取

# 方法1:正则表达式匹配# 方法2:DOM 元素查找# 方法3:JavaScript 执行# 方法4:文本行分析
  • 多种方法互补,提高爬虫健壮性
  • 逐步降级策略

2. 等待与加载策略

  • wait_for_load_state('networkidle'):等待网络空闲
  • time.sleep(3):显式等待 JS 执行
  • window.scrollTo():滚动页面触发懒加载

3. 防反爬虫策略

args=['--disable-blink-features=AutomationControlled']
  • 禁用自动化控制特征
  • 模拟真实浏览器行为

学习建议

  1. 先掌握基础:Requests + BeautifulSoup 处理静态页面
  2. 再学动态爬虫:Playwright/Selenium 处理 JS 渲染页面
  3. 重视正则表达式:数据清洗的关键工具
  4. 学会调试:保存页面内容,分析网页结构
  5. 注意反爬虫:合理设置请求间隔,尊重 robots.txt

代码亮点总结

知识点应用场景学习价值
Playwright动态网页爬取现代爬虫必备技能
正则表达式数据提取与清洗文本处理核心能力
错误处理爬虫稳定性生产级代码要求
数据存储结果持久化数据处理完整流程
模块化设计代码可维护性工程化思维培养

这份代码是一个完整的生产级爬虫示例,涵盖了从爬取、解析、清洗到存储的全流程,非常适合作为学习爬虫的进阶案例。

Read more

Sora AI漫剧教程入门指南:提示词生成分镜结构与Sora一键生成

Sora AI漫剧教程入门指南:提示词生成分镜结构与Sora一键生成

随着 Sora 等视频/图像生成模型的成熟,AI 漫剧正在从“单张好看插画”进化为具备完整镜头语言与叙事节奏的视觉作品。 本教程将教你一种目前非常成熟、稳定、可复用的方法: 用一个 3x3 Contact Sheet(电影印样)提示词,一次性生成完整漫剧分镜结构,并使用Sora制作AI漫剧 该方法参考了 nanobanana 分镜体系 与 电影分镜逻辑,非常适合用于: * Sora AI 漫剧 * AI 分镜预演 * 动画 / 漫画分镜设计 * 连续剧情图生成 一、为什么一定要用 Contact Sheet(电影印样)? 很多人用 AI 画漫剧会遇到这些问题: * ❌ 每一张都像“换了一个人” * ❌ 场景、光线、时间不统一 * ❌ 看起来像插画拼贴,没有叙事 * ❌ 无法转视频、无法做动画

2026年计算机视觉、AI与智能自动化国际学术会议(ICCVAA 2026)

2026年计算机视觉、AI与智能自动化国际学术会议(ICCVAA 2026)

2026计算机视觉、AI与智能自动化国际学术会议(ICCVAA 2026) 会议官网:www.iccvaa.com 会议时间:2026年4月10日-12日 会议地点:河南-郑州 截稿日期:2026年3月31日 录用结果:投稿后1周内 收录检索:EI Compendex, Scopus 【大会简介】 2026年计算机视觉、AI与智能自动化国际会议(ICCVAA 2026)将于2026年4月10-12日于郑州召开。ICCVAA2026将汇聚高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验,扩大专业网络,面对面交流新思想以及展示研究成果的国际平台,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和应用,也为参会者建立业务或研究上的联系以及寻找未来事业上的全球合作伙伴。 【大会组委会】 【主讲嘉宾】 【征稿主题】 一、计算机视觉:大数据与计算机视觉、生物特征识别、生物医学图像分析、遥感图像、计算摄影、目标检测算法、感知与显示、

AI辅助测试用例生成实操教程

AI在测试用例生成中的变革作用 随着AI技术的飞速发展,软件测试领域正经历革命性变革。传统测试用例设计依赖人工经验,耗时且易遗漏边缘场景;而AI辅助工具能自动化分析需求、预测风险并生成高覆盖率测试用例,提升效率50%以上。本教程针对测试从业者,从零开始讲解实操步骤,涵盖工具选择、流程实施到优化技巧。目标是让您1小时内上手AI测试用例生成,适用于Web、移动端及API测试等场景。 一、准备工作:选择AI工具与环境搭建 AI测试用例生成的核心是工具链。以下是2026年主流工具推荐及配置指南: 1. 工具选择: * Selenium AI插件:集成机器学习模型,支持Web自动化测试。免费开源,适合中小团队。 * Testim.io:商业平台,使用AI生成基于用户行为的测试用例,提供可视化报告。 * Applitools:专注视觉测试,AI识别UI差异,生成视觉验证用例。 * 开源框架(如TensorFlow测试模块):自定义AI模型,适合高级用户。 选择标准:根据项目复杂度—简单项目用Selenium,大型系统选Testim。 2. 环

【拥抱AI】别让 AI 只会补全了!OpenCode 教你把“初级工程师”塞进命令行

【拥抱AI】别让 AI 只会补全了!OpenCode 教你把“初级工程师”塞进命令行

一、OpenCode 是什么? * Open Source AI Coding Agent:开源、可自托管、可用任何大模型(Claude / OpenAI / Google / 自建本地模型)的“AI 编程代理”,以终端为主界面,同时提供桌面应用和 IDE 插件等形式。 * 终端优先 TUI + 桌面应用 + IDE 插件:你可以在终端里和它聊天、让它干活;也有桌面版(Beta),未来还会有更多客户端。 * 深度绑定 GitHub / GitLab:在 PR/issue 里评论一句 /opencode,它就会在 GitHub Actions 里帮你分析、修 bug、开分支、提 PR。 简单理解: