Skip to content

ciskonc/movie_review_douban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Douban Movie Comments Scraper (豆瓣电影短评采集器)

一个基于 requestsBeautifulSoup 构建的轻量级、带容错架构的网页结构化解析脚本。用于精准采集豆瓣电影特定条目下的用户短评数据。

核心特性

  • 防反爬雪崩机制:内置 DOM 节点断言。当遭遇豆瓣动态 WAF 风控(如哈希碰撞拦截)或 Cookie 鉴权失效时,脚本不会直接崩溃,而是自动保存案发现场为 debug_page.html 供开发者审查。
  • 并发速率节流:硬编码 3 秒的强休眠请求间隔,严格控制并发频率,最大程度降低 IP 被风控封禁的概率。
  • 数据结构化输出:自动解析非结构化 HTML,清洗脏数据(如空白字符、换行符),并持久化输出为带 BOM 的 UTF-8 编码 CSV 文件。

运行环境与依赖

  • Python 3.7+
  • 依赖库:requests, beautifulsoup4, lxml

安装依赖: pip install requests beautifulsoup4 lxml


配置与启动指南

⚠️ 强制前置条件:注入身份凭证 豆瓣短评接口包含严格的业务隔离与鉴权,本脚本必须携带有效的已登录用户 Cookie 方可运行。

  1. 在浏览器(建议开启无痕模式)登录你的豆瓣账号。

  2. F12 开启开发者工具,切换至 Network (网络) 面板。

  3. 访问任意一部电影的短评页面(如:https://movie.douban.com/subject/26857715/comments)。

  4. 在网络请求列表中找到该页面的主文档请求,在右侧的 Request Headers (请求头) 中复制完整的 Cookie 字符串(包含 dbcl2 等关键字段)。

  5. 打开本脚本 main.py,将抓取到的字符串填入全局常量 HEADERS 中的 cookie 字段:

    HEADERS = { # ... 其他头信息保持不变 'cookie': '在此处填入你抓取到的完整且新鲜的 Cookie 字符串' }

  6. (可选)修改全局常量 URL,替换为你需要抓取的电影短评首页链接。

执行脚本: python main.py


产出结果说明

脚本运行结束后,根据网络状态与风控情况,将产生以下两种维度的结果:

1. 成功抓取:comments_douban.csv

当网络请求状态码为 200 且未被 WAF 拦截时,程序会在项目根目录生成 comments_douban.csv 文件。文件包含以下 4 个字段的数据矩阵:

  • ID: 评论者的豆瓣用户昵称(字符串)。
  • Time: 评论发布的时间戳,精确到日(格式示例:2023-10-01)。
  • star: 用户的量化评分(整数 1 至 5 分别对应 很差、较差、还行、推荐、力荐。若用户仅短评未打星,则显示为 ?)。
  • comments: 评论正文(已去除多余换行符的纯文本)。

2. 拦截态留存:debug_page.html

当程序判定目标 DOM 节点 (id='comments') 缺失时,说明请求已被豆瓣风控路由劫持。此时将在根目录生成 debug_page.html

  • 分析方法:直接在浏览器中双击打开该文件,若显示“载入中...”且源码包含 process、sha512 等字样,说明触发了浏览器工作量证明 (PoW) 校验;若显示登录框,则说明你的 Cookie 已过期。

⚠️ 已知限制 / Known Limitations

最大抓取深度受限:受豆瓣官方的数据展示策略限制,目前已登录用户最多只能连续翻页查看最近的 20 页(约 400 条)短评。当脚本抓取达到此上限时,豆瓣页面将不再提供下一页的 URL,脚本会自动判定为抓取完成并安全退出。此为平台服务端的物理限制,并非代码存在 Bug。


免责声明与合规警告 / Disclaimer

  1. 风险提示:本脚本未配置代理 IP 池。使用私人豆瓣账号及家庭宽带高频抓取,极易触发豆瓣系统级反爬策略,可能导致账号被暂时冻结或公网 IP 被封禁(403 状态)。使用者须自行承担一切账号与网络状态异常风险。
  2. 合规边界:本项目开源代码仅供 Python 网络请求封装、DOM 解析逻辑以及动态风控对抗思路的学术与技术探讨。
  3. 禁止滥用:严禁将本脚本用于任何突破目标网站 robots.txt 协议的高并发恶意采集、数据倒卖或其它非法商业牟利行为。

About

Python Douban Movie Comments Scraper (豆瓣电影短评采集器)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages