【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格

项目二:python爬取豆瓣电影信息并分析 总目录 点击跳转 说在前面 对豆瓣电影top250的爬取与分析 爬虫时主要运用的库是re,request,Beautifulsoup,lxml, 分析时主要运用的是pandas,matplotlib。 通过 F12 查看网页源代码,ctrl+shift+i ctrl+shift+n,检查元素,定位要爬取的信息, 这里可以右击复制xpath,用于爬虫定位。 爬虫定位有三种方法: 通过正则表达式定位 通过Beautifulsoup中find函数定位 通过lxml中Xpath定位 观察一下网页,可以发现一共有10 阅读详情

使用Python获取“豆瓣电影”相关数据,并生成Excel表格

本文使用了requests和pandas第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内。但发现存在以下三个问题:

  1. 生成的Excel表格,第一个sheet页为空
  2. 数据爬取数据过长
  3. 无法获取每个标签的具体电影数量,所以我取了一个吉祥的数字520,但请各位大佬指教,若为空,则直接停止,进入下一个标签的爬取

请各位大佬进行指教,并进行优化,小弟在此谢谢!
注:要是觉得文章写得不错,记得留个赞哦!
多余的sheet页
因为如果一开始不生成一个sheet页,则无法使用ExcelWriter的方法,小弟的解决方法是使用remove方法进行移除多余的sheet页,代码如下,请各位大佬指教!

# 移除创建表格时多余的sheet页
def del_excel(self):
	book = load_workbook(self.fileName)
	ws = book["Sheet1"]
	book.remove(ws)
	book.save(self.fileName)

爬取豆瓣电影相关数据的具体代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests as re
from openpyxl import load_workbook
import pandas as pd
import json


class DouBan:
    def __init__(self):

        self.sr1 = pd.DataFrame(columns=["评分", "电影名"], index=None)
        self.fileName = 'C:/Users/Administrator/Desktop/豆瓣电影评分.xlsx'
        # sheetName = '豆瓣电影评分'

        # 获取检索标签名
        self.tag_Movie = {
            0: "热门",
            1: "最新",
            2: "经典",
            3: "豆瓣高分",
            4: "冷门佳片",
            5: "华语",
            6: "欧美",
            7: "韩国",
            8: "日本",
            9: "动作",
            10: "喜剧",
            11: "爱情",
            12: "科技",
            13: "悬疑",
            14: "恐怖",
            15: "治愈"
        }

    def douban_movie(self):

        # 创建空文件
        self.sr1.to_excel(self.fileName, index=False, header=True)
        # 遍历检索标签,获取各标签的数据
        for tagNumber in range(0, 16):
            tag_Num = self.tag_Movie[tagNumber]
            # 将获取的数据暂存在sr3列表内
            sr3 = []
            for page_s in range(0, 20, 20):

                for l in self.movie_request(tag_Num, page_s):
                    movieDetails = self.movie_details(movieID=l['id'])
                    sr3.append({
                        '评分': l['rate'],
                        "电影名": l['title'],
                        "导演": json.dumps(movieDetails["directors"], indent=0, separators=('\n', ': '),
                                         ensure_ascii=False),
                        "主演": json.dumps(movieDetails["actors"], indent=0, separators=('\n', ': '), ensure_ascii=False),
                        "时长": movieDetails["duration"]
                    })

            self.excel_data(sr3, tag_Num)

        self.del_excel()  # 移除多余的sheet1页
        print("====数据获取成功====")

    # 移除创建表格时多余的sheet页
    def del_excel(self):

        book = load_workbook(self.fileName)
        ws = book["Sheet1"]
        book.remove(ws)
        book.save(self.fileName)

    # 在新的sheet页添加相应的数据,并保证数据不被覆盖
    def excel_data(self, sr3, tag_Num):
        """
        :param sr3:
        :type tag_Num: object
        """
        book = load_workbook(self.fileName)
        writer = pd.ExcelWriter(self.fileName, mode="a", engine="openpyxl")
        writer.book = book
        sr1 = pd.DataFrame(sr3, index=None)
        sr1.to_excel(writer, index=False, header=True, sheet_name=f"{tag_Num}")
        writer.save()  # 这步才生成文件
        writer.close()

    # 获取豆瓣电影接口数据
    @staticmethod
    def movie_request(tag_Num, page_s):
        """
        :type page_s: object
        :type tag_Num: object
        """
        url = "https://movie.douban.com/j/search_subjects"

        params = {
            "type": "movie",
            "tag": tag_Num,
            "sort": "recommend",
            "page_limit": 20,
            "page_start": page_s
        }

        headers = {
            "Authorization": "token",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
        }

        movies = re.get(url, params=params, headers=headers)
        js = movies.json()
        js = js["subjects"]
        data = json.dumps(js, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)  # 字符串转化
        print(data)
        return js

    # 获取电影详情
    @staticmethod
    def movie_details(movieID):

        url = "https://movie.douban.com/j/subject_abstract?"

        params = {
            "subject_id": movieID
        }

        headers = {
            "Authorization": "token",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"
        }

        movies = re.get(url, params=params, headers=headers)
        js = movies.json()
        js = js["subject"]
        # data = json.dumps(js, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)  # 字符串转化
        # print(data)
        return js


if __name__ == '__main__':
    DouBan = DouBan()
    DouBan.douban_movie()
    

生成的Excel表格如下,如果可以生成更漂亮的表格请指教!
表格数据

120行代码爬取豆瓣电影top250 笔者最近学习爬虫,拿豆瓣电影进行练手,无奈豆瓣电影存在反爬机制,爬完250就会重定向要求我进行登陆操作,所以我这一次只爬取前50进行相关测试,废话不多说,我们来看下源代码 这次用到的还是requests库,BeautifulSoup解析库,和re进行辅助的正则匹配库,最后老样子利用pandas的DataFrame进行excel的写入 import requests from bs4 import ... 阅读详情

相关推荐

实战:爬取豆瓣电影Top250,并生成Excel榜单

本文介绍了使用Python爬取豆瓣电影Top250榜单的完整流程。通过requests获取数据、BeautifulSoup解析HTML、pandas处理数据,最终生成格式优化的Excel文件。文章详细讲解了环境配置、反爬策略、数据提取逻辑和Excel生成方法,并提供了完整可运行的代码。适合Python初学者学习网页爬取基础技术,实现从数据采集到结构化输出的全流程自动化。文中还强调了爬虫合规性和反爬注意事项,仅限个人学习使用。

weixin_41943766的博客 1941

python pandas 豆瓣电影 top250 数据分析

python pandas 豆瓣电影 top250 数据分析 豆瓣电影top250数据分析 数据来源(豆瓣电影top250) 爬虫代码比较简单 数据较为真实,可以进行初步的数据分析 可以将前面的几篇文章中的介绍的数据预处理的方法进行实践 最后用matplotlib与pyecharts两种可视化包进行部分数据展示 数据仍需深挖,有待加强 #首先按照惯例导入...

onemorepoint的博客 5966

Python爬取豆瓣电影Top25并存储至Excel表格

import requests import re import openpyxl from openpyxl.styles import Font from openpyxl.styles import colors def parse_html(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0;...

桔里桔气 682

简易数据分析--豆瓣电影(pandas+pyecharts)

简易数据分析--豆瓣电影一.数据二.处理数据1.导入数据2.进行年月分析统计出不同年份的电影数量利用pyecharts进行数据展示(折线图)3.进行国家分析简单处理国家的数据进行统计数量利用pyecharts进行数据展示(饼图)4.对演员进行分析处理演员数据利用pycharts进行数据展示(饼图) 一.数据 通过爬虫爬取豆瓣的top250,爬取数据(排名,片名,导演,上影时间,国家,类型,演员,时...

qq_42418845的博客 2527

Python Playwright实战:豆瓣电影TOP10数据爬取与Excel报表生成

浏览器自动化是Web数据采集和测试领域的关键技术,它通过模拟真实用户操作来获取动态渲染的页面内容。其核心原理是程序化控制浏览器引擎,执行JavaScript并获取完整的DOM结构,从而解决传统静态爬虫难以处理单页应用(SPA)和复杂交互的问题。在技术价值层面,自动化工具能显著提升数据采集的稳定性和效率,尤其适用于需要处理反爬机制或动态内容的场景。以豆瓣电影TOP10数据采集为例,通过Playwright这一现代浏览器自动化框架,可以完整实现从页面导航、元素定位到数据提取的全流程,并结合openpyxl库将结

weixin_34319817的博客 439

豆瓣电影Top250及影评数据采集与分析实战项目

htmltable {th, td {th {pre {简介:本项目围绕“豆瓣电影Top250”榜单及其用户影评数据,提供一套完整的数据获取与分析流程。通过网络爬虫技术抓取电影基本信息(如片名、导演、年份、评分)和用户评论内容,并以Excel格式存储于“doubanmovie”文件中,便于使用Python pandas 等工具进行数据清洗与分析。

weixin_42502040的博客 1899

豆瓣电影评分分析(数据分析)

本文主要通过对豆瓣电影影评爬取的数据进行的简要分析,观察得出各部分之间对应的关系影响。 一.数据抓取 我们要想进行数据分析,首先就要通过爬虫对分析对象网页的数据爬取保存,可以保存到数据库或者文件形式到本地,这里我是保存在表格中。下面是爬取数据的关键步骤: 1. 二.数据清洗 三.数据可视化分析 ...

qq_51058871的博客 1万+

用Python3打造豆瓣电影TOP250爬虫

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。通过函数可以将代码模块化,便于复用和维护。# 定义一个简单的函数print(greet("Alice")) # 输出: Hello, Alice!以上章节内容展示了Python3的一些核心基础概念,为后续网络爬虫的实现打下了基础。随着学习的深入,我们将逐渐探索如何利用Python3的强大功能来处理网络数据,实现自动化数据抓取和处理。网络爬虫,通常被称为网络蜘蛛(Spider)或网络机器人(Bot),是一种自动化浏览网络资源的程序。

weixin_28809949的博客 771

python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pandas as pd import json 下面我们看一下豆瓣电影排行榜的信息(以喜剧电影排行榜为例) 思路步骤: 注意:之前我们写过爬取链家房源数据的爬虫(见下方),通过观察我们发现,链家网址...

老人与海丨 3272

豆瓣电影数据new.xlsx

豆瓣电影数据共3.8万条。 包含[名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点]

豆瓣电影top250python代码(可生成excel文件,也可将结果导入数据库)

本资源使用python进行编写,文件在pycharm中进行使用,该文件运行结束后将获取到的豆瓣电影top250的数据可以以.xlsx格式进行保存,也可以直接保存到数据库中,探查的内容有:"电影详情链接", "图片链接", "影片中文名", "影片外国名", "评分", "评价人数", "概况", "相关信息"。方便后期进行数据分析和可视化处理。

关于豆瓣的电影数据爬取与 Excel 交互式报表实现

本项目针对豆瓣电影官方 TOP250,通过 Python 完成数据爬取→清洗处理→Excel 交互式报表生成全流程,核心目标是精准提取豆列中 250 部电影的基础信息(名称、导演、主演等),并通过 Excel 实现可视化分析与数据筛选功能。

2503_92366040的博客 2251

30000豆瓣电影信息.xlsx

近30000条豆瓣电影信息,包括中文名,国别,类别,部分短评等信息。最关键的是有手工筛选过的关键词(类似于标签,但比标签更多)信息。

使用numpy、pandas、matplotlib对excel表格进行数据分析

使用python对excel表格进行数据分析 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 开发工具 Python数据分析,使用numpy、pandas、matplotlib库对excel表格进行分析。 numpy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构(nested list structure)要高效得多(该结构也可以用来表示矩阵(matrix))。 .

weixin_43673522的博客 1万+

豆瓣电影数据集(2019.3).xlsx.zip

豆瓣电影数据集(截至2019年3月),共91369条。 包含[电影名称,评分,评价人数,各星级占比,短评数量,影评数量,类型,导演,编剧,主演,制片国家/地区,语言,上映日期,片长,网址,剧情简介]

豆瓣电影数据集(截至2019.3).xlsx

豆瓣电影数据集(截至2019年3月),共91369条。 包含[电影名称,评分,评价人数,各星级占比,短评数量,影评数量,类型,导演,编剧,主演,制片国家/地区,语言,上映日期,片长,网址,剧情简介]

Python爬取豆瓣TOP250电影的名字和封面(仅供学习使用)

','pandas',若未安装在cmd运行以下命令。首先,确保安装库'requests','

MinL1ghT的博客 1894

豆瓣电影数据集+数据分析入门数据集

【字段】 电影名称、投票人数、类型、产地、上映时间、时长、年代、评分、首映地点 【用途】 该数据集非常适用了Python数据分析入门,是学习NumPy 、Pandas、Matplotlib的练手数据集

上一篇: 【接口测试】使用Python语言,进行简单的接口测试
下一篇: 【面试练习题】存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和
Warolitbos
博客等级 码龄7年 108粉丝 66原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Warolitbos

如果有帮助,请我喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值