首页 > 编程语言 >用 Python 构建一个简单的爬虫:抓取豆瓣电影信息

用 Python 构建一个简单的爬虫:抓取豆瓣电影信息

时间:2024-12-24 13:30:08浏览次数:8  
标签:douban Python 电影 爬虫 抓取 movies csv

用 Python 构建一个简单的爬虫:抓取豆瓣电影信息

在这里插入图片描述

爬虫是 Python 开发者的必备技能之一。本文将带你从零开始,构建一个简单的爬虫,用来抓取豆瓣电影 Top 250 的信息,包括电影名称、评分和简介。


目录

  1. 项目简介
  2. 环境配置与依赖安装
  3. 解析目标网站结构
  4. 编写爬虫代码
  5. 保存数据到 CSV 文件
  6. 运行与结果展示
  7. 优化与扩展

1. 项目简介

我们将构建一个爬虫,完成以下任务:

  • 访问豆瓣电影 Top 250 页面
  • 抓取每部电影的名称、评分、评论人数、导演信息等
  • 将抓取到的信息保存到 CSV 文件中

2. 环境配置与依赖安装

安装 Python 环境

确保你的系统中已经安装了 Python(建议 3.7+ 版本)。

安装必要库

我们需要以下第三方库:

  • requests:发送 HTTP 请求
  • BeautifulSoup:解析 HTML 内容
  • pandas:处理和保存数据

使用 pip 安装这些库:

pip install requests beautifulsoup4 pandas

3. 解析目标网站结构

打开豆瓣电影 Top 250 页面 https://movie.douban.com/top250
通过浏览器开发者工具查看页面结构,发现每部电影的关键信息位于 <div class="info"> 中。

<div class="info">
  <div class="hd">
    <a href="电影详情页链接">
      <span class="title">电影名称</span>
    </a>
  </div>
  <div class="bd">
    <p class="star">
      <span class="rating_num" property="v:average">评分</span>
    </p>
    <p class="">电影简介</p>
  </div>
</div>

在这里插入图片描述


4. 编写爬虫代码

创建 douban_spider.py 文件,写入以下代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 爬取单页数据
def fetch_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # 检查是否请求成功
    return response.text

# 解析单页数据
def parse_page(html):
    soup = BeautifulSoup(html, 'html.parser')
    movies = []
    for item in soup.find_all('div', class_='info'):
        title = item.find('span', class_='title').get_text(strip=True)
        rating = item.find('span', class_='rating_num').get_text(strip=True)
        quote = item.find('span', class_='inq').get_text(strip=True) if item.find('span', class_='inq') else 'N/A'
        movies.append({'Title': title, 'Rating': rating, 'Quote': quote})
    return movies

# 主函数:爬取所有页面
def main():
    base_url = "https://movie.douban.com/top250"
    all_movies = []
    for start in range(0, 250, 25):  # 每页显示 25 部电影,共 10 页
        url = f"{base_url}?start={start}"
        print(f"Fetching {url}...")
        html = fetch_page(url)
        movies = parse_page(html)
        all_movies.extend(movies)
    return all_movies

if __name__ == "__main__":
    movies = main()
    print(f"Total movies fetched: {len(movies)}")
    df = pd.DataFrame(movies)
    df.to_csv('douban_movies.csv', index=False)
    print("Movies saved to 'douban_movies.csv'")

5. 保存数据到 CSV 文件

我们使用 pandas 将抓取的数据保存到 CSV 文件中:

df = pd.DataFrame(movies)
df.to_csv('douban_movies.csv', index=False)

这会将电影信息保存到 douban_movies.csv,方便后续分析和使用。


6. 运行与结果展示

运行爬虫

在终端运行以下命令:

python douban_spider.py

在这里插入图片描述

输出示例

控制台会显示爬取的进度,最终生成 douban_movies.csv 文件,其内容如下:

TitleRatingQuote
肖申克的救赎9.7希望让人自由。
霸王别姬9.6风华绝代。
阿甘正传9.5一部美国近现代史。

7. 优化与扩展

  1. 增加爬取字段
    比如电影的导演、主演、上映时间等,可以通过修改 parse_page 函数抓取更多信息。

  2. 异常处理
    如果某一页抓取失败,记录错误日志而非中断整个程序。

  3. IP 代理与反爬机制
    使用代理池防止 IP 被封禁,或者设置随机的请求头来模拟真实用户。

  4. 数据存储
    将数据保存到数据库(如 MySQL 或 MongoDB),方便进一步查询和分析。


总结

通过本项目,你学会了如何使用 Python 构建一个基本的爬虫,抓取网页内容并保存到文件中。这个爬虫可以进一步优化和扩展,比如支持断点续传、动态页面处理等功能。快动手试试吧!

标签:douban,Python,电影,爬虫,抓取,movies,csv
From: https://blog.csdn.net/mmc123125/article/details/144692129

相关文章

  • [机器人机构学]课设四:moveit配置及python接口控制
    运行环境:ROS操作系统需要安装:VMwareWorkstationProROS操作系统不想自己安装ROS的看这里系列文章目录[机器人机构学]课设一:通过杆件四大参数确定机械臂模型[机器人机构学]课设二:三维建模及爆炸图动画制作[机器人机构学]课设三:SOLIDWORKS模型转URDF[机器人机构......
  • Python机器学习笔记(十一、特征提取)
    特征提取PCA的另一个应用是特征提取。特征提取背后的思想是,可以找到一种数据表示,比给定的原始表示更适合于分析。特征提取很有用,它的一个很好的应用实例就是图像。图像由像素组成,通常存储为红绿蓝(RGB)强度。图像中的对象通常由上千个像素组成,它们只有放在一起才有意义。现在......
  • python web知识点梳理
    目录1、第1章Django概述(1)环境搭建:需要安装django,使用国内镜像(2)创建项目和应用2、第2章路由系统(1)路由工作原理:(2)内置路由转换器(3)路由分发:include函数(4)向视图传递额外参数(5)命名空间①URL命名和reverse解析函数②应用命名空间,app_name属性3、第3章模型(1)定义和使......
  • (2024最新毕设合集)基于SpringBoot的小说在线阅读网咖+86615|可做计算机毕业设计JAVA、P
    目 录摘要1绪论1.1 选题背景1.2研究内容1.3本文的组织结构2相关技术介绍2.1MySQL数据库2.2Java编程语言2.3SpringBoot框架介绍3 系统需求分析与设计3.1可行性分析3.1.1技术可行性分析3.1.2经济可行性分析3.1.3法律可行性分析3.2需......
  • 利用Python爬虫快速获取商品历史价格信息
    在电商时代,商品价格波动频繁,对于消费者和市场分析师来说,掌握商品的历史价格信息至关重要。这不仅能够帮助消费者做出更明智的购买决策,还能为市场趋势分析提供数据支持。本文将介绍如何使用Python爬虫技术快速获取商品的历史价格信息,并进行初步分析。Python爬虫技术简介Pytho......
  • Java爬虫:速卖通(AliExpress)商品评论获取指南
    引言在当今的电商时代,商品评论对于消费者决策有着举足轻重的影响。速卖通(AliExpress),作为全球知名的在线零售平台之一,拥有海量的商品评论数据。对于商家而言,能够高效地获取这些评论数据,不仅可以用于市场分析,还能洞察消费者需求,优化商品和服务。本文将介绍如何使用Java编写爬虫......
  • 如何利用PHP爬虫获取速卖通(AliExpress)商品评论
    在电商领域,商品评论是了解产品口碑和用户反馈的重要渠道。速卖通(AliExpress)作为全球知名的电商平台,其商品评论对于商家和消费者都具有重要价值。本文将详细介绍如何使用PHP编写爬虫程序,以合法、高效的方式获取速卖通商品的评论信息。1.环境准备在开始编写爬虫之前,需要准备......
  • 【Python GUI 编程】tkinter:Ttk 进度条 Progressbar
    在本文中,将介绍TkinterProgressbar进度条小部件。Progressbar进度条小部件向用户提供长时间运行任务时的进度反馈。要创建Progressbar进度条小部件,请使用以下构造函数:ttk.Progressbar(container,orient,length,mode)主要参数如下:进度条模式determinate模式:进度......
  • 【Python GUI 编程】tkinter :Ttk 小部件
    在本文中,将介绍Tkinter.ttk主题小部件,是常规Tkinter小部件的升级版本。Tkinter有两种小部件:经典小部件、主题小部件。Tkinter于1991年推出了经典小部件,2007年在Tk8.5中添加新式的主题小部件。主题小部件更新了部分经典小部件,并增加了部分新的小部件。要使用tkinter.tt......
  • 【Python GUI 编程】tkinter :Ttk 树视图 Treeview
    在本文中,将介绍TkinterTreeview树视图小部件以及如何使用它来显示表格和分层数据。Tkinter中,没有专门的表格部件,Treeview可以很好地显示表格数据,支持多列显示。要创建Treeview树视图小部件,可以使用以下构造函数:tree=ttk.Treeview(master,**options)Treeview显示表......