【Python爬虫五十个小案例】爬取豆瓣电影Top250

ops/2024/11/30 12:58:11/

请添加图片描述

博客主页:小馒头学python

本文专栏: Python爬虫五十个小案例

专栏简介:分享五十个Python爬虫小案例

在这里插入图片描述

🪲前言

在这篇博客中,我们将学习如何使用Python爬取豆瓣电影Top250的数据。我们将使用requests库来发送HTTP请求,BeautifulSoup库来解析HTML页面,并将数据存储到CSV文件中。这个爬虫将自动获取豆瓣电影Top250页面的信息,包括电影名称、导演、主演、评分等详细信息

豆瓣电影Top250是一个包含豆瓣评分最高的250部电影的榜单,是电影爱好者查找电影的一大宝库。本博客将指导大家如何通过编写Python爬虫自动获取豆瓣电影Top250的数据

🪲环境准备

首先,我们需要安装一些Python库来完成本次任务。以下是我们将使用的库:

  • requests:用来发送HTTP请求并获取网页内容。
  • BeautifulSoup:用来解析HTML页面,提取我们需要的数据。
  • csv:将爬取的数据保存到CSV文件中。

因为我们使用的是Python进行爬虫,所以我们使用的命令行是

pip install requests beautifulsoup4 csv

🪲爬虫原理与分析

豆瓣电影Top250的URL是 https://movie.douban.com/top250。页面内容是分页显示的,每一页展示25部电影,最多5页。我们需要访问这些页面并提取电影数据

数据结构分析

每一部电影的信息在HTML结构中都有相应的标签,我们需要从中提取出以下信息:

  • 电影名称
  • 电影评分
  • 电影导演
  • 电影主演
  • 电影年份
  • 电影类型

通过使用BeautifulSoup解析HTML,我们可以轻松提取这些信息

🪲代码具体的实现

发送请求获取网页内容

我们首先使用requests库发送请求来获取网页内容。豆瓣会返回HTML页面,我们将把这些内容传递给BeautifulSoup进行解析

python">import requests
from bs4 import BeautifulSoup# 设置请求头,避免被豆瓣屏蔽
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.36'
}# 获取豆瓣电影Top250的前五页数据
base_url = "https://movie.douban.com/top250"
movie_list = []def get_page(url):response = requests.get(url, headers=headers)return response.text

解析网页内容

使用BeautifulSoup解析HTML页面,找到每部电影的信息。每部电影的信息包含在div标签中,类名为item

python">def parse_page(html):soup = BeautifulSoup(html, 'html.parser')movies = soup.find_all('div', class_='item')for movie in movies:title = movie.find('span', class_='title').textrating = movie.find('span', class_='rating_num').textdirector, actors = movie.find('div', class_='bd').find('p').text.strip().split("\n")[:2]year = movie.find('div', class_='bd').find('p').text.strip().split("\n")[0]movie_type = movie.find('span', class_='genre').text.strip()movie_info = {'title': title,'rating': rating,'director': director,'actors': actors,'year': year,'type': movie_type}movie_list.append(movie_info)

提取电影数据

我们现在可以循环访问每一页的URL并提取数据。豆瓣电影Top250有5页,URL结构为https://movie.douban.com/top250?start=X,其中X为每页的起始索引(0, 25, 50, …)

接下来我们的其他案例也会采取类似的分析方式,同学们可以

def main():for start in range(0, 250, 25):url = f"{base_url}?start={start}"html = get_page(url)parse_page(html)# 输出结果for movie in movie_list:print(movie)if __name__ == "__main__":main()

保存数据到CSV文件或者Excel文件

为了方便后续的数据分析,我们可以将数据保存到CSV文件中

import csvdef save_to_csv():keys = movie_list[0].keys()with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as output_file:dict_writer = csv.DictWriter(output_file, fieldnames=keys)dict_writer.writeheader()dict_writer.writerows(movie_list)save_to_csv()

如果是Excel那么可以参考下面的案例代码

python">import pandas as pd  # 导入pandas库def save_to_excel():df = pd.DataFrame(movie_list)  # 将电影列表转换为DataFramedf.to_excel('douban_top250.xlsx', index=False, engine='openpyxl')  # 保存为Excel文件

🪲完整的代码

python">import csvimport requests
from bs4 import BeautifulSoup
import pandas as pd  # 导入pandas库# 设置请求头,避免被豆瓣屏蔽
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.36'
}# 获取豆瓣电影Top250的前五页数据
base_url = "https://movie.douban.com/top250"
movie_list = []# 发送请求获取网页内容
def get_page(url):response = requests.get(url, headers=headers)return response.text# 解析网页内容并提取电影信息
def parse_page(html):soup = BeautifulSoup(html, 'html.parser')movies = soup.find_all('div', class_='item')for movie in movies:title = movie.find('span', class_='title').textrating = movie.find('span', class_='rating_num').textdirector_actors = movie.find('div', class_='bd').find('p').text.strip().split("\n")[:2]director = director_actors[0]actors = director_actors[1] if len(director_actors) > 1 else ''# 处理电影类型,避免找不到的情况genre_tag = movie.find('span', class_='genre')movie_type = genre_tag.text.strip() if genre_tag else '未知'# 处理电影年份year_tag = movie.find('div', class_='bd').find('p').text.strip().split("\n")[0]# 构建电影信息字典movie_info = {'title': title,'rating': rating,'director': director,'actors': actors,'year': year_tag,'type': movie_type}# 将电影信息添加到列表中movie_list.append(movie_info)# 爬取豆瓣电影Top250的所有页面
def main():# 遍历前5页的豆瓣Top250for start in range(0, 250, 25):url = f"{base_url}?start={start}"html = get_page(url)parse_page(html)# 输出结果for movie in movie_list:print(movie)def save_to_csv():keys = movie_list[0].keys()  # 获取电影数据字典的键(即列名)# 写入CSV文件with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as output_file:dict_writer = csv.DictWriter(output_file, fieldnames=keys)dict_writer.writeheader()  # 写入列名dict_writer.writerows(movie_list)  # 写入电影数据# 主函数
if __name__ == "__main__":main()save_to_csv()print("爬取完成,数据已保存到 douban_top250.csv")

🪲运行效果

运行上述代码后,你将会得到一个名为douban_top250.csv的文件,文件内容如下所示:

在这里插入图片描述

下图是保存为csv文件的格式,这里注意encoding=‘utf-8-sig’,encoding如果等于utf-8,那么直接双击csv文件会乱码的

在这里插入图片描述

🪲总结

本文主要介绍了如果使用简单的爬虫进行数据的爬取,这里主要进行豆瓣电影Top250的数据爬取,我们使用的库就是requests、bs4、pandas、csv等库,本节主要重在案例的实践,还想了解更多的爬虫案例可以关注我的专栏

Python爬虫五十个小案例:https://blog.csdn.net/null18/category_12840403.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12840403&sharerefer=PC&sharesource=null18&sharefrom=from_link


http://www.ppmy.cn/ops/137926.html

相关文章

打造高质量技术文档的关键要素(结合MATLAB)

在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它不仅是知识传承的载体,也是团队协作的桥梁,更是产品成功的幕后英雄。打造出色的技术文档并非易事,以下将从多个方向探讨如何做到这一点。 文章目录 方向一:…

openssl 基本命令使用方法

查看OpenSSL的版本信息: root openssl version OpenSSL 3.4.0 22 Oct 2024 (Library: OpenSSL 3.4.0 22 Oct 2024)注:root 代表命令行提示符,不属于输入部分。 获取OpenSSL的帮助信息: root openssl help help:Standard comma…

揭示Lyapunov方法的奥秘:控制理论中的稳定性之钥

揭示Lyapunov方法的奥秘:控制理论中的稳定性之钥 引言 在控制理论和动力系统的研究中,稳定性分析始终是一个核心问题。19世纪末,俄罗斯杰出的数学家亚历山大米哈伊洛维奇李雅普诺夫(Aleksandr Mikhailovich Lyapunov&#xff09…

springboot338it职业生涯规划系统--论文pf(论文+源码)_kaic

毕 业 设 计(论 文) 题目:it职业生涯规划系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以…

如何借助AI生成PPT,让创作轻松又高效

PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…

Java面向对象.抽象

目录 1.object类 一、Object类的地位 所有类的父类 2.抽象类 一、定义与声明 抽象类的概念 二、抽象方法 抽象方法的特点 三、继承抽象类 子类的责任 3.抽象方法基础理念 1.抽象方法的特征 2.将abstaract加在方法的前面,该类无法被继承 1.首先&#xff0…

java全栈day10--后端Web基础(基础知识)

引言:只要能通过浏览器访问的网站全是B/S架构,其中最常用的服务器就是Tomcat 在浏览器与服务器交互的时候采用的协议是HTTP协议 一、Tomcat服务器 1.1介绍 官网地址:Apache Tomcat - Welcome! 1.2基本使用(网上有安装教程,建议…

剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍

一、三种批量替换模式的区别 二、混剪裂变替换素材 三、分区混剪裂变替换素材 四、按组精确替换素材 五、绿色按钮教程 (一)如何附加音频和srt字幕 (二)如何替换固定文本的内容和样式 (三)如何附加…