首页/新闻资讯/正文详情

Python爬虫与AIGC结合实现豆瓣电影智能推荐

发布时间:2026/11/15 21:26:07 来源:云帆数科 栏目:资讯中心
Python爬虫与AIGC结合实现豆瓣电影智能推荐
1. 项目概述当Python爬虫遇上AIGC最近在整理个人影单时突然想到如果能自动抓取豆瓣电影榜单数据再用AI生成个性化推荐该多方便。说干就干我用Python的requestsBeautifulSoup组合实现了基础爬虫接着用通义千问API对数据进行二次加工。整个过程就像搭积木——先获取原材料网页数据再用AI工具进行精加工分析推荐。这个项目特别适合两类朋友一是刚学Python想找实战项目的入门者网页抓取是检验基础语法的最佳试金石二是对AIGC应用感兴趣的技术爱好者你会发现大模型API调用比想象中简单得多。下面我就把踩过的坑和最终方案完整分享出来代码已上传GitHub文末附链接。2. 技术选型与工具准备2.1 为什么选择这套技术栈爬虫部分选用requestsBeautifulSoup而非Scrapy主要考虑三点学习曲线平缓Scrapy框架需要理解中间件、管道等概念豆瓣页面结构相对简单无需分布式爬取配合lxml解析器速度足够应对中小规模抓取测试时发现豆瓣电影TOP250页面有基础反爬措施User-Agent校验需模拟浏览器访问频率限制需设置2-3秒间隔动态加载内容部分数据需要解析JavaScript对于AIGC部分选择通义千问API出于以下考量中文处理能力强于GPT-3.5提供免费额度足够本项目使用返回结果包含结构化数据便于后续处理2.2 环境配置清单# 核心依赖库 pip install requests beautifulsoup4 lxml # AIGC相关 pip install dashscope # 通义千问Python SDK重要提示建议使用Python 3.8版本部分新特性如f-string能让代码更简洁。我在Windows 11VS Code和macOSPyCharm环境下均测试通过。3. 爬虫实现详解3.1 网页结构分析首先用Chrome开发者工具(F12)观察豆瓣TOP250页面每部电影信息包裹在div classitem中评分位于span classrating_num短评数量藏在div classstar下的第2个span详情页链接在div classhd的a标签href属性关键发现翻页通过URL参数?start控制每页25条共10页。3.2 核心爬取代码import requests from bs4 import BeautifulSoup import time headers { User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 } def scrape_douban_top250(): base_url https://movie.douban.com/top250 movies [] for page in range(0, 250, 25): url f{base_url}?start{page} response requests.get(url, headersheaders) soup BeautifulSoup(response.text, lxml) for item in soup.find_all(div, class_item): title item.find(span, class_title).text rating item.find(span, class_rating_num).text comment_count item.find(div, class_star).find_all(span)[-1].text[:-3] detail_url item.find(div, class_hd).a[href] movies.append({ title: title, rating: float(rating), comment_count: int(comment_count), detail_url: detail_url }) time.sleep(2.5) # 礼貌性延迟 return movies3.3 反爬应对策略User-Agent轮换准备多个主流浏览器的UA字符串存入列表随机选择IP代理池使用免费代理IP服务如西刺代理但注意免费IP稳定性差请求间隔随机化将固定2.5秒改为random.uniform(1.5, 3.5)Cookie维持使用requests.Session()保持会话实测发现豆瓣对单个IP的容忍度较高只要不短时间高频访问如每秒多次基础UA延迟就能稳定抓取。4. AIGC数据处理实践4.1 数据清洗与结构化原始爬取数据存在三个问题中文片名和英文片名混在一起如肖申克的救赎 / The Shawshank Redemption部分字段缺失如老电影可能没有评分人数数据类型需要转换字符串转数值清洗代码示例def clean_movie_data(raw_data): cleaned [] for movie in raw_data: # 分离中英文片名 title_parts movie[title].split( / ) main_title title_parts[0] # 处理可能缺失的字段 rating movie.get(rating, 0) comments movie.get(comment_count, 0) cleaned.append({ chinese_title: main_title, original_title: title_parts[1] if len(title_parts) 1 else , rating: rating, comment_count: comments, detail_url: movie[detail_url] }) return cleaned4.2 通义千问API接入首先到阿里云开通DashScope服务获取API Keyimport dashscope dashscope.api_key 你的API_KEY def analyze_with_ai(movie_data): prompt f请根据以下电影信息生成推荐理由 片名{movie_data[chinese_title]} 评分{movie_data[rating]}/10 短评数{movie_data[comment_count]} 要求 1. 指出电影类型如剧情/科幻 2. 50字以内推荐语 3. 用emoji表情增加趣味性 response dashscope.Generation.call( modelqwen-turbo, promptprompt ) return response.output[text]4.3 结果可视化使用PandasMatplotlib生成基础图表import pandas as pd import matplotlib.pyplot as plt def visualize_results(movies): df pd.DataFrame(movies) # 评分分布直方图 plt.figure(figsize(10, 6)) df[rating].hist(bins20) plt.title(豆瓣TOP250评分分布) plt.xlabel(评分) plt.ylabel(电影数量) plt.savefig(rating_dist.png) # 评分与评论数散点图 plt.figure(figsize(10, 6)) plt.scatter(df[rating], df[comment_count], alpha0.5) plt.title(评分 vs 评论数) plt.xlabel(评分) plt.ylabel(评论数) plt.savefig(rating_vs_comments.png)5. 完整项目架构douban-ai-analyzer/ ├── scraper/ # 爬虫模块 │ ├── __init__.py │ ├── douban.py # 核心爬取逻辑 │ └── utils.py # 反爬工具类 ├── aigc/ # AI处理模块 │ ├── analyzer.py # 通义千问接口封装 │ └── prompts/ # 预设提示词模板 ├── data/ # 数据存储 │ ├── raw/ # 原始数据 │ └── processed/ # 清洗后数据 ├── docs/ # 文档 ├── requirements.txt # 依赖清单 └── main.py # 入口文件6. 常见问题与解决方案6.1 爬虫被封怎么办现象返回403状态码或验证码页面解决方案检查User-Agent是否有效增加代理IP降低请求频率至每分钟不超过20次使用selenium模拟人工操作终极方案6.2 AIGC返回内容不符合预期优化方向改进提示词工程# 不好的示例 说说这部电影怎么样 # 好的示例 请以专业影评人角度分析 1. 指出3个核心亮点表演/剧情/摄影 2. 用1-10分评估艺术价值 3. 适合哪类观众调整temperature参数控制创造性对输出结果后处理提取关键信息6.3 数据存储方案选型根据数据量选择小型项目CSV文件pandas.to_csv中型项目SQLite内置支持无需安装大型项目MongoDB适合非结构化数据# SQLite示例 import sqlite3 conn sqlite3.connect(movies.db) df.to_sql(douban_top250, conn, if_existsreplace, indexFalse)7. 项目扩展思路实时监控用APScheduler定时运行检测榜单变化情感分析抓取短评后用NLP分析情感倾向个性化推荐结合用户历史评分构建推荐系统自动化报告用Jinja2生成HTML周报部署为服务FastAPI暴露RESTful接口# FastAPI简易示例 from fastapi import FastAPI app FastAPI() app.get(/recommend) async def recommend_genre(genre: str): return [m for m in movies if genre in analyze_with_ai(m)]这个项目最让我惊喜的是AIGC的接入成本之低——不到50行代码就实现了智能影评生成。有个小心得豆瓣的robots.txt并未禁止/top250的抓取但商业用途仍需获得授权。完整代码已放在GitHub搜索douban-ai-analyzer欢迎Star交流。

相关推荐

为RE引擎游戏注入新生命:REFramework模组框架完全指南
为RE引擎游戏注入新生命:REFramework模组框架完全指南

为RE引擎游戏注入新生命:REFramework模组框架完全指南 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework REFramework是一款专为Capcom… · 2026/11/15 21:26:05

Linux下使用Dislocker解锁BitLocker加密磁盘的完整指南
Linux下使用Dislocker解锁BitLocker加密磁盘的完整指南

1. 项目概述:当Linux遇上BitLocker如果你是一位需要在Linux环境下访问Windows BitLocker加密分区的用户,那么“Aorimn/dislocker”这个项目对你来说,很可能就是那根救命稻草。我最初接触这个工具,是因为工作需要从一台Windows笔记… · 2026/11/15 21:26:05

洛雪音乐助手桌面版:开源免费跨平台音乐播放器终极指南
洛雪音乐助手桌面版:开源免费跨平台音乐播放器终极指南

洛雪音乐助手桌面版:开源免费跨平台音乐播放器终极指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 洛雪音乐助手桌面版是一款基于Electron和Vue 3开发的完全免费开… · 2026/9/21 0:20:55

武器特种工有哪些工种 值得考吗多少钱都得弄清楚
武器特种工有哪些工种 值得考吗多少钱都得弄清楚

武器特种工有哪些工种 值得考吗多少钱都得弄清楚 你是不是刚毕业就找不到工作?是不是面试一再被问“特种作业证”?别急,特种作业证不是摆设,它可是你上岗的“通行证”,也是你找工作的“敲门砖”。 武器特种工有哪些工种… · 2026/11/15 21:25:14

安顺特种工费用千万别踩坑 3000字全攻略帮你一次性通过
安顺特种工费用千万别踩坑 3000字全攻略帮你一次性通过

安顺特种工费用千万别踩坑 3000字全攻略帮你一次性通过 怕考不过白交培训费?安顺特种工费用一出来,不少学员就犯愁了。你是不是也遇到过这种情况:交了钱,培训时间没安排好,考试一紧张就栽了? 千万别踩坑… · 2026/11/15 21:25:14

惠州办电工证在哪里办多少钱 外省证怎么转过来
惠州办电工证在哪里办多少钱 外省证怎么转过来

惠州办电工证在哪里办多少钱 外省证怎么转过来 之前考的证在外省能不能转过来?这是很多在惠州打工的电工朋友最关心的问题。很多人在老家考了电工证,现在到了惠州工作,想继续干这行,但又不知道怎么办理转证手续,更不知道 多少钱 。今天就来聊聊… · 2026/11/15 21:25:14

建筑电工证年审怎么审?怕考不过白交培训费?这样报名更稳妥
建筑电工证年审怎么审?怕考不过白交培训费?这样报名更稳妥

建筑电工证年审怎么审?怕考不过白交培训费?这样报名更稳妥 怕考不过白交培训费?你不是一个人。很多建筑电工在准备年审时,总担心自己会因为资料不全、流程不熟或者考试内容不熟,白白浪费时间和钱。实际上,只要掌握报名流程、年审要求和考试技巧,… · 2026/11/15 21:25:13

阜阳电工证换证流程内部消息:学历不高怕报不上名?教你一步搞定
阜阳电工证换证流程内部消息:学历不高怕报不上名?教你一步搞定

阜阳电工证换证流程内部消息:学历不高怕报不上名?教你一步搞定 你是不是也担心自己学历不高,连电工证都报不上?别急,阜阳电工证换证流程其实没有想象中那么复杂,关键是你有没有掌握 内部消息… · 2026/11/15 21:25:13

低压电工作业课件怎么选?上岗必备的备考攻略来了
低压电工作业课件怎么选?上岗必备的备考攻略来了

低压电工作业课件怎么选?上岗必备的备考攻略来了 工地太忙根本没时间复习考试,这几乎是所有低压电工作业人员的真实写照。但不管多忙, 上岗必备… · 2026/11/15 21:24:13

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码