15分钟学 Python 第41天:Python 爬虫入门(六)第二篇

Day41:Python爬取猫眼电影网站的电影信息

1. 项目背景

在本项目中,我们将使用 Python 爬虫技术从猫眼电影网站抓取电影信息。猫眼电影是一个知名的电影信息平台,提供了丰富的电影相关数据。通过这个练习,您将深入学习如何抓取动态网站的数据,包括发送请求、解析 JSON 数据、处理分页等基本技术。

2. 项目目标

  • 爬取猫眼电影网站的电影信息,包括电影名称、评分、票房、上映时间等。
  • 将抓取的数据保存为CSV文件,便于后续分析与使用。

3. 核心工具

  • Python 3.x :编程语言环境。
  • requests :用于发送 HTTP 请求。
  • json :用于解析 JSON 数据。
  • pandas :用于数据存储和处理。
  • BeautifulSoup :用于解析 HTML 文档(如需处理 HTML 内容)。

4. 环境准备

确保您的环境中安装了以下库。在终端中运行以下命令:

bash 复制代码
pip install requests pandas beautifulsoup4

5. 数据抓取流程

5.1 确定目标网址和接口

我们要爬取的猫眼电影数据源是一个 API 接口,可以通过特定的 GET 请求获取数据。猫眼的电影数据接口如下:

复制代码
https://maoyan.com/board/4

5.2 发送请求

使用 requests 库向网页发送请求,获取网页内容。

5.3 解析JSON数据

使用 json 库解析获取的 JSON 数据。

5.4 提取电影信息

从解析的内容中提取所需的电影信息。

5.5 处理分页

处理多页数据,确保提取到所有电影信息。

5.6 数据存储

将提取到的数据存储为 CSV 文件。

5.7 运行流程图

开始 发送请求到猫眼 获取JSON内容 解析JSON数据 提取电影信息 处理分页 存储数据到CSV 结束

6. 示例代码

以下是完整的代码示例,分为几个功能部分以便更好理解。

6.1 导入必要的库

python 复制代码
import requests
import pandas as pd
import json
import time

6.2 发送请求并获取页面内容

python 复制代码
def fetch_movies(page):
    url = f'https://maoyan.com/board/4?offset={page * 10}'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.text
    else:
        print("请求失败", response.status_code)
        return None

6.3 解析HTML并提取信息

python 复制代码
def parse_movies(html):
    movies = []
    soup = BeautifulSoup(html, 'html.parser')
    for item in soup.find_all('div', class_='movie-item-info'):
        title = item.find('p', class_='name').text.strip()
        star = item.find('p', class_='star').text.strip()
        score = item.find('p', class_='score').text.strip()
        release_time = item.find('p', class_='releaese').text.strip().split(':')[-1]
        movies.append({
            'Title': title,
            'Star': star,
            'Score': score,
            'Release Time': release_time
        })
    return movies

6.4 存储数据到CSV

python 复制代码
def save_to_csv(movies, filename='maoyan_movies.csv'):
    df = pd.DataFrame(movies)
    df.to_csv(filename, index=False, encoding='utf-8-sig')
    print(f"数据已保存到 {filename}")

6.5 主程序

python 复制代码
def main():
    all_movies = []
    for page in range(10):  # 爬取前 10 页数据
        html = fetch_movies(page)
        if html:
            movies = parse_movies(html)
            all_movies.extend(movies)
            time.sleep(2)  # 添加延迟,避免请求过快
    save_to_csv(all_movies)

if __name__ == '__main__':
    main()

7. 数据分析与检查

运行完毕后,我们可以使用 pandas 读取 CSV 文件并检查数据:

python 复制代码
def load_and_check_csv(filename='maoyan_movies.csv'):
    df = pd.read_csv(filename)
    print(df.head())
    print(f"总电影数: {len(df)}")

load_and_check_csv()

8. 样例输出

执行后,输出的 maoyan_movies.csv 文件中将包含如下示例数据:

Title Star Score Release Time
你好,李焕英 张小斐,贾玲 9.6 2021-02-12
你的婚礼 祝绪丹,陈飞宇 9.2 2021-02-14
夺冠 巩俐,黄渤 9.0 2020-12-02

9. 注意事项

  1. 反爬虫机制:猫眼可能会使用反爬虫机制,建议在请求之间加上延迟,模拟人类访问。
  2. 合法合规:请遵循猫眼的使用协议,确保抓取信息不违反网站政策。
  3. 数据质量:抓取的数据质量可能会受到影响,需要进行数据清洗和校验。

10. 总结

通过本项目,您学习了如何使用 Python 爬虫技术从猫眼电影网站中抓取电影信息。掌握了数据获取、解析和存储的基本流程。接下来,可以尝试改进程序,例如:抓取更详细的电影信息,尝试其他页面或增加异常处理等,以深入理解 Python 爬虫的应用潜力。



怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

相关推荐
Java后端的Ai之路7 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
Flynn Liang7 小时前
Spring AI 上生产:限流熔断、密钥与成本治理、私有化/混合部署、降级与 Prompt 灰度架构全解
人工智能·spring·架构·高可用·springai·成本治理·生产架构
飞猫的边缘AI8 小时前
边缘AI芯片的规则变了:从跑CNN到跑LLM和VLM
人工智能·语言模型·cnn·transformer·边缘ai
code2cat8 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰8 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
牧羊人.3338 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
Flynn Liang8 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
DeepVisionary8 小时前
为拿并网许可,OpenAI在佐治亚新园区同意高峰期断电三成
python·自动化
Martina_03218 小时前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
蓝鲨硬科技8 小时前
Token之后,物理AI需要什么样的度量衡?
大数据·人工智能