当前位置: 首页 > news >正文

Python 爬虫爬取豆瓣电影列表信息,爬虫的原理,应用领域介绍学习

1. 什么是Python 爬虫

定义:爬虫是一种自动化程序,能够遍历互联网上的各个网页,并根据预设的规则和算法来解析和收集感兴趣的信息。这些信息可以包括网页的文本内容、图片、链接、视频等。

功能:爬虫可以自动化执行重复、繁琐的任务,如定时抓取和更新网站上的信息、自动化监测网站的性能和稳定性、自动化测试网站功能等,从而提高工作效率和质量。

2.爬取原理

  • 选择起始网页:爬虫首先选择一个起始网页作为起点。
  • 解析和访问链接:爬虫按照一定的规则逐步解析和访问起始网页中的其他链接。
  • 抓取网页内容:爬虫发送HTTP请求获取网页的HTML源码,并通过解析HTML提取网页中的有用信息。
  • 链接提取和去重:从抓取的网页中提取出新的链接,并进行去重处理,以避免重复抓取相同的页面。
  • 重复抓取:重复执行上述步骤,直到达到设定的停止条件,如抓取的网页数量达到阈值、达到抓取 深度限制或超过时间限制等。
  • 数据处理和存储:对抓取的数据进行处理、清洗和存储,以便后续使用。

3.爬虫的应用领域

  • 搜索引擎:搜索引擎使用爬虫来抓取和索引网页,提供全面的搜索结果。
  • 数据挖掘:通过抓取和分析网页中的数据,进行用户行为分析、市场调研、舆情监测等。
  • 自动化测试:爬虫可以用于自动化测试网站的功能和性能。
  • 产品开发和创新:通过爬虫发现新的市场机会和需求,为企业开发新产品和创新服务提供参考。
  • 学习和研究:研究人员和教育工作者可以利用爬虫从互联网上收集文献、数据集等资源,支持他们的研究工作和教学活动。

4.爬取豆瓣电影列表信息,分析统计电影排名,点赞,评分等信息

4.1 实例html源码

<div class="item"><div class="pic"><em class="">1</em><a href="https://movie.douban.com/subject/1292052/"><img alt="肖申克的救赎" class="" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg"width="100"/></a></div><div class="info"><div class="hd"><a class="" href="https://movie.douban.com/subject/1292052/"><span class="title">肖申克的救赎</span><span class="title"> / The Shawshank Redemption</span><span class="other"> / 月黑高飞(港)  /  刺激1995(台)</span></a><span class="playable">[可播放]</span></div><div class="bd"><p class="">导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /...<br/>1994 / 美国 / 犯罪 剧情</p><div class="star"><span class="rating5-t"></span><span class="rating_num" property="v:average">9.7</span><span content="10.0" property="v:best"></span><span>3056599人评价</span></div><p class="quote"><span class="inq">希望让人自由。</span></p></div></div>
</div>

4.2 爬虫源码

import requests
from bs4 import BeautifulSoup
def fetch_douban_movie_top_list(start=0, count=25):"""爬取豆瓣电影Top 250列表:param start: 起始页码(每页25部电影):param count: 每页电影数量,豆瓣每页固定25部:return: 电影列表"""url = f'https://movie.douban.com/top250?start={start}&filter='headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}try:response = requests.get(url, headers=headers)response.raise_for_status()  # 如果请求失败,则抛出HTTPError异常soup = BeautifulSoup(response.text, 'html.parser')# print("++++++++++++++++++",soup)# 查找电影信息(这里以电影标题和评分为例)movie_list = []items = soup.find_all('div', class_='item')for item in items:director = item.find('p', class_='').get_text(strip=True, separator=' ').split('主演:')[0].split('导演:')[1].strip()desc = item.find('p', class_='').get_text(strip=True, separator=' ')evaluator = item.find('div', class_='star').find_all('span')[-1].text.strip()title = item.find('span', class_='title').get_text()img_url = item.find('img')['src']rating = item.find('span', class_='rating_num').get_text()theme = item.find('span', class_='inq').get_text()movie_list.append({'title': title,'theme': theme,'rating': rating,'director': director,'img_url': img_url,'evaluator': evaluator,'desc': desc})return movie_listexcept requests.RequestException as e:print(e)return []# 爬取前20部电影(由于豆瓣每页显示25部,这里只需要第一页即可)
movies = fetch_douban_movie_top_list(start=1, count=25)  # 注意:count参数实际上不起作用,因为豆瓣每页固定25部
for movie in movies[:25]:  # 只取前20部print(movie)# 注意:由于豆瓣的反爬机制,你可能需要添加额外的处理,如设置请求间隔、使用代理等

4.3 爬取结果存储

爬取结果可以存储在 关系型数据库或者非关系型数据库或者存储在Excel 中都行,如果需要这方面的知识请到博主主页留言。后续会补齐

4.4 数据分析

因为数据都结构化了,使用Pandas 或者使用大数据sql都可以进行分析

5.爬取结果展示

在这里插入图片描述

{'title': '霸王别姬', 'theme': '风华绝代。', 'rating': '9.6', 'director': '陈凯歌 Kaige Chen', 'img_url': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg', 'evaluator': '2257810人评价', 'desc': '导演: 陈凯歌 Kaige Chen\xa0\xa0\xa0主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha... 1993\xa0/\xa0中国大陆 中国香港\xa0/\xa0剧情 爱情 同性'}
{'title': '阿甘正传', 'theme': '一部美国近现代史。', 'rating': '9.5', 'director': '罗伯特·泽米吉斯 Robert Zemeckis', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2372307693.jpg', 'evaluator': '2276825人评价', 'desc': '导演: 罗伯特·泽米吉斯 Robert Zemeckis\xa0\xa0\xa0主演: 汤姆·汉克斯 Tom Hanks / ... 1994\xa0/\xa0美国\xa0/\xa0剧情 爱情'}
{'title': '泰坦尼克号', 'theme': '失去的才是永恒的。 ', 'rating': '9.5', 'director': '詹姆斯·卡梅隆 James Cameron', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg', 'evaluator': '2316657人评价', 'desc': '导演: 詹姆斯·卡梅隆 James Cameron\xa0\xa0\xa0主演: 莱昂纳多·迪卡普里奥 Leonardo... 1997\xa0/\xa0美国 墨西哥\xa0/\xa0剧情 爱情 灾难'}
{'title': '千与千寻', 'theme': '最好的宫崎骏,最好的久石让。 ', 'rating': '9.4', 'director': '宫崎骏 Hayao Miyazaki', 'img_url': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg', 'evaluator': '2365436人评价', 'desc': '导演: 宫崎骏 Hayao Miyazaki\xa0\xa0\xa0主演: 柊瑠美 Rumi Hîragi / 入野自由 Miy... 2001\xa0/\xa0日本\xa0/\xa0剧情 动画 奇幻'}
{'title': '这个杀手不太冷', 'theme': '怪蜀黍和小萝莉不得不说的故事。', 'rating': '9.4', 'director': '吕克·贝松 Luc Besson', 'img_url': 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg', 'evaluator': '2399566人评价', 'desc': '导演: 吕克·贝松 Luc Besson\xa0\xa0\xa0主演: 让·雷诺 Jean Reno / 娜塔莉·波特曼 ... 1994\xa0/\xa0法国 美国\xa0/\xa0剧情 动作 犯罪'}
{'title': '美丽人生', 'theme': '最美的谎言。', 'rating': '9.5', 'director': '罗伯托·贝尼尼 Roberto Benigni', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2578474613.jpg', 'evaluator': '1392326人评价', 'desc': '导演: 罗伯托·贝尼尼 Roberto Benigni\xa0\xa0\xa0主演: 罗伯托·贝尼尼 Roberto Beni... 1997\xa0/\xa0意大利\xa0/\xa0剧情 喜剧 爱情 战争'}
{'title': '星际穿越', 'theme': '爱是一种力量,让我们超越时空感知它的存在。', 'rating': '9.4', 'director': '克里斯托弗·诺兰 Christopher Nolan', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2614988097.jpg', 'evaluator': '1986161人评价', 'desc': '导演: 克里斯托弗·诺兰 Christopher Nolan\xa0\xa0\xa0主演: 马修·麦康纳 Matthew Mc... 2014\xa0/\xa0美国 英国 加拿大\xa0/\xa0剧情 科幻 冒险'}
{'title': '盗梦空间', 'theme': '诺兰给了我们一场无法盗取的梦。', 'rating': '9.4', 'director': '克里斯托弗·诺兰 Christopher Nolan', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p513344864.jpg', 'evaluator': '2178677人评价', 'desc': '导演: 克里斯托弗·诺兰 Christopher Nolan\xa0\xa0\xa0主演: 莱昂纳多·迪卡普里奥 Le... 2010\xa0/\xa0美国 英国\xa0/\xa0剧情 科幻 悬疑 冒险'}
{'title': '楚门的世界', 'theme': '如果再也不能见到你,祝你早安,午安,晚安。', 'rating': '9.4', 'director': '彼得·威尔 Peter Weir', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p479682972.jpg', 'evaluator': '1841994人评价', 'desc': '导演: 彼得·威尔 Peter Weir\xa0\xa0\xa0主演: 金·凯瑞 Jim Carrey / 劳拉·琳妮 Lau... 1998\xa0/\xa0美国\xa0/\xa0剧情 科幻'}
{'title': '辛德勒的名单', 'theme': '拯救一个人,就是拯救整个世界。', 'rating': '9.5', 'director': '史蒂文·斯皮尔伯格 Steven Spielberg', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p492406163.jpg', 'evaluator': '1177527人评价', 'desc': '导演: 史蒂文·斯皮尔伯格 Steven Spielberg\xa0\xa0\xa0主演: 连姆·尼森 Liam Neeson... 1993\xa0/\xa0美国\xa0/\xa0剧情 历史 战争'}
{'title': '忠犬八公的故事', 'theme': '永远都不能忘记你所爱的人。', 'rating': '9.4', 'director': '莱塞·霍尔斯道姆 Lasse Hallström', 'img_url': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2587099240.jpg', 'evaluator': '1458512人评价', 'desc': '导演: 莱塞·霍尔斯道姆 Lasse Hallström\xa0\xa0\xa0主演: 理查·基尔 Richard Ger... 2009\xa0/\xa0美国 英国\xa0/\xa0剧情'}
{'title': '海上钢琴师', 'theme': '每个人都要走一条自己坚定了的路,就算是粉身碎骨。 ', 'rating': '9.3', 'director': '朱塞佩·托纳多雷 Giuseppe Tornatore', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511146957.jpg', 'evaluator': '1759469人评价', 'desc': '导演: 朱塞佩·托纳多雷 Giuseppe Tornatore\xa0\xa0\xa0主演: 蒂姆·罗斯 Tim Roth / ... 1998\xa0/\xa0意大利\xa0/\xa0剧情 音乐'}
{'title': '三傻大闹宝莱坞', 'theme': '英俊版憨豆,高情商版谢耳朵。', 'rating': '9.2', 'director': '拉库马·希拉尼 Rajkumar Hirani', 'img_url': 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg', 'evaluator': '1951253人评价', 'desc': '导演: 拉库马·希拉尼 Rajkumar Hirani\xa0\xa0\xa0主演: 阿米尔·汗 Aamir Khan / 卡... 2009\xa0/\xa0印度\xa0/\xa0剧情 喜剧 爱情 歌舞'}
{'title': '放牛班的春天', 'theme': '天籁一般的童声,是最接近上帝的存在。 ', 'rating': '9.3', 'director': '克里斯托夫·巴拉蒂 Christophe Barratier', 'img_url': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2884280708.jpg', 'evaluator': '1382918人评价', 'desc': '导演: 克里斯托夫·巴拉蒂 Christophe Barratier\xa0\xa0\xa0主演: 让-巴蒂斯特·莫尼... 2004\xa0/\xa0法国 瑞士 德国\xa0/\xa0剧情 音乐'}
{'title': '机器人总动员', 'theme': '小瓦力,大人生。', 'rating': '9.3', 'director': '安德鲁·斯坦顿 Andrew Stanton', 'img_url': 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p1461851991.jpg', 'evaluator': '1388307人评价', 'desc': '导演: 安德鲁·斯坦顿 Andrew Stanton\xa0\xa0\xa0主演: 本·贝尔特 Ben Burtt / 艾丽... 2008\xa0/\xa0美国\xa0/\xa0科幻 动画 冒险'}
{'title': '疯狂动物城', 'theme': '迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。', 'rating': '9.2', 'director': '拜伦·霍华德 Byron Howard / 瑞奇·摩尔 Rich Moore', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2315672647.jpg', 'evaluator': '2073687人评价', 'desc': '导演: 拜伦·霍华德 Byron Howard / 瑞奇·摩尔 Rich Moore\xa0\xa0\xa0主演: 金妮弗·... 2016\xa0/\xa0美国\xa0/\xa0喜剧 动画 冒险'}
{'title': '无间道', 'theme': '香港电影史上永不过时的杰作。', 'rating': '9.3', 'director': '刘伟强 / 麦兆辉', 'img_url': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2564556863.jpg', 'evaluator': '1452504人评价', 'desc': '导演: 刘伟强 / 麦兆辉\xa0\xa0\xa0主演: 刘德华 Andy Lau / 梁朝伟 Tony Leung Chiu W... 2002\xa0/\xa0中国香港\xa0/\xa0剧情 犯罪 惊悚'}
{'title': '控方证人', 'theme': '比利·怀德满分作品。', 'rating': '9.6', 'director': '比利·怀尔德 Billy Wilder', 'img_url': 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2911817201.jpg', 'evaluator': '628437人评价', 'desc': '导演: 比利·怀尔德 Billy Wilder\xa0\xa0\xa0主演: 泰隆·鲍华 Tyrone Power / 玛琳·... 1957\xa0/\xa0美国\xa0/\xa0剧情 犯罪 悬疑 惊悚'}
{'title': '大话西游之大圣娶亲', 'theme': '一生所爱。', 'rating': '9.2', 'director': '刘镇伟 Jeffrey Lau', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2455050536.jpg', 'evaluator': '1608310人评价', 'desc': '导演: 刘镇伟 Jeffrey Lau\xa0\xa0\xa0主演: 周星驰 Stephen Chow / 吴孟达 Man Tat Ng... 1995\xa0/\xa0中国香港 中国大陆\xa0/\xa0喜剧 爱情 奇幻 古装'}
{'title': '熔炉', 'theme': '我们一路奋战不是为了改变世界,而是为了不让世界改变我们。', 'rating': '9.3', 'director': '黄东赫 Dong-hyuk Hwang', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1363250216.jpg', 'evaluator': '978933人评价', 'desc': '导演: 黄东赫 Dong-hyuk Hwang\xa0\xa0\xa0主演: 孔侑 Yoo Gong / 郑有美 Yu-mi Jung /... 2011\xa0/\xa0韩国\xa0/\xa0剧情'}
{'title': '教父', 'theme': '千万不要记恨你的对手,这样会让你失去理智。', 'rating': '9.3', 'director': '弗朗西斯·福特·科波拉 Francis Ford Coppola', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p616779645.jpg', 'evaluator': '1027336人评价', 'desc': '导演: 弗朗西斯·福特·科波拉 Francis Ford Coppola\xa0\xa0\xa0主演: 马龙·白兰度 M... 1972\xa0/\xa0美国\xa0/\xa0剧情 犯罪'}
{'title': '触不可及', 'theme': '满满温情的高雅喜剧。', 'rating': '9.3', 'director': '奥利维·那卡什 Olivier Nakache / 艾力克·托兰达 Eric Toledano\xa0\xa0\xa0主... 2011\xa0/\xa0法国\xa0/\xa0剧情 喜剧', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1454261925.jpg', 'evaluator': '1194489人评价', 'desc': '导演: 奥利维·那卡什 Olivier Nakache / 艾力克·托兰达 Eric Toledano\xa0\xa0\xa0主... 2011\xa0/\xa0法国\xa0/\xa0剧情 喜剧'}
{'title': '当幸福来敲门', 'theme': '平民励志片。 ', 'rating': '9.2', 'director': '加布里尔·穆奇诺 Gabriele Muccino', 'img_url': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2614359276.jpg', 'evaluator': '1593929人评价', 'desc': '导演: 加布里尔·穆奇诺 Gabriele Muccino\xa0\xa0\xa0主演: 威尔·史密斯 Will Smith ... 2006\xa0/\xa0美国\xa0/\xa0剧情 传记 家庭'}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 回归预测|基于北方苍鹰优化核极限学习机的数据预测Matlab程序NGO-KELM 多特征输入单输出
  • 强大的 solidity 框架:Foundry 之命令行工具 — Cast
  • php-fpm 如何查看哪个正在执行死循环 并终止
  • Redis 的 主从复制
  • 软件中的重构
  • Linux CentOS 添加路由
  • 如何下载jmeter旧版本
  • 如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL
  • 软件架构设计——能力供应商模式
  • Base CTF [第2周]UPX的
  • Claude 与 ChatGPT:哪个更适合学术写作,深入对比分析
  • ARM-Cortex-M架构:1、STM32函数参数传递
  • 团队管理之敏捷开发
  • Linux文件目录系统
  • 【c语法】##__VA_ARGS__与__VA_ARGS__
  • 【前端学习】-粗谈选择器
  • 230. Kth Smallest Element in a BST
  • CentOS7 安装JDK
  • fetch 从初识到应用
  • java2019面试题北京
  • Java应用性能调优
  • nginx 配置多 域名 + 多 https
  • Redis中的lru算法实现
  • vuex 学习笔记 01
  • vue总结
  • 关于springcloud Gateway中的限流
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 如何进阶一名有竞争力的程序员?
  • -- 数据结构 顺序表 --Java
  • 携程小程序初体验
  • 学习Vue.js的五个小例子
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 带你开发类似Pokemon Go的AR游戏
  • ​zookeeper集群配置与启动
  • ​批处理文件中的errorlevel用法
  • # .NET Framework中使用命名管道进行进程间通信
  • # 计算机视觉入门
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #pragma multi_compile #pragma shader_feature
  • #Ubuntu(修改root信息)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)scrum常见工具列表
  • (轉)JSON.stringify 语法实例讲解
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core WebAPI中封装Swagger配置
  • .NET 使用 XPath 来读写 XML 文件
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证