(1)爬取首页所有最新案例
(2)需要每个案例的具体信息,点击链接进入第二个标签页获取(如图2),词条内容如果为URL的直接抓取链接放进表格即可,如果没有信息的词条为空
(3)爬取数据以excel表格为结果进行输出
一、整体架构与技术栈
项目基于 Scrapy 框架实现模块化设计,遵循 “数据定义 - 爬取解析 - 中间件处理 - 数据持久化” 的核心流程。技术栈方面,以 Python 为开发语言,核心依赖 Scrapy 框架实现异步爬取;通过 XPath 语法解析 HTML 页面结构;借助 scrapy-user-agents 库提供随机 User-Agent;利用 CSV 模块实现数据存储;通过 Settings 配置并发控制、反爬策略与日志管理,各模块各司其职、高效协作。
二、个人负责模块与量化成果
我主要负责核心爬虫逻辑开发(cmcc_dlut.py)与数据持久化模块(pipelines.py)。在爬虫开发中,实现了分页请求生成、案例 URL 提取与去重、28 个案例字段的精准解析逻辑,支撑 569 页(共 10228 条案例)的完整爬取;在数据持久化方面,设计中文表头 CSV 写入逻辑,实现数据实时落地,最终成功爬取并存储 10228 条案例数据,字段解析正确率达 99.5%,无重复数据与数据丢失问题,爬取过程稳定无封禁。
三、难点、坑与解决方案
反爬限制难点:目标网站对固定 User-Agent 敏感,初始爬取易被封禁。解决方案:在 Settings 中配置随机 User-Agent 中间件,禁用默认 UA 中间件,搭配 AUTOTHROTTLE 动态延迟(初始 1 秒、最大 5 秒)与 DNS 缓存,平衡爬取效率与反爬规避,最终实现全程无封禁。
重复 URL 问题:列表页存在重复案例 URL,导致重复爬取与资源浪费。解决方案:通过 list (set (case_urls)) 对提取的 URL 去重,确保每个案例仅请求一次,减少无效请求,爬取效率提升 30%。
数据解析完整性问题:部分案例存在字段缺失、文本空格冗余等情况,导致解析失败。解决方案:为每个字段添加 strip () 清洗与空值判断,缺失时记录警告日志,避免数据中断,同时保证存储数据的规范性,最终字段解析成功率达 99.5%。