【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格
使用Python获取“豆瓣电影”相关数据,并生成Excel表格
本文使用了requests
和pandas
第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内。但发现存在以下三个问题:
- 生成的Excel表格,第一个sheet页为空
- 数据爬取数据过长
- 无法获取每个标签的具体电影数量,所以我取了一个吉祥的数字
520
,但请各位大佬指教,若为空,则直接停止,进入下一个标签的爬取
请各位大佬进行指教,并进行优化,小弟在此谢谢!
注:要是觉得文章写得不错,记得留个赞哦!
因为如果一开始不生成一个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 jsonclass 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 = booksr1 = pd.DataFrame(sr3, index=None)sr1.to_excel(writer, index=False, header=True, sheet_name=f"{tag_Num}")writer.save() # 这步才生成文件writer.close()# 获取豆瓣电影接口数据@staticmethoddef 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# 获取电影详情@staticmethoddef 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 jsif __name__ == '__main__':DouBan = DouBan()DouBan.douban_movie()
生成的Excel表格如下,如果可以生成更漂亮的表格请指教!
【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格相关推荐
- python爬虫爬取腾讯网站——实时疫情数据并生成Excel表格
一.基本介绍: 开发背景:自从2020年新冠疫情发生后,至今为止的相关疫情数据新闻已经是非常的巨大了,我们无时不在在用数据尝试帮助我们解剖全球的疫情状况.由此可见,新冠疫情数据的新闻报道数量与国内疫情 ...
- python爬取豆瓣电影top250并保存为xlsx_python抓取豆瓣电影Top250数据并写入Excel
douban python抓取豆瓣电影Top250数据并写入Excel 1.将目标网站上的页面抓取下来 2.将抓取下来的数据根据一定的规则进行提取 create table `tb_movie`( i ...
- 小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格
将Word文档中数据汇总到Excel表格 前言 一.应用场景 二.程序思路及准备工作 思路如下: 准备工作: 三.程序代码 1.主程序 2.获取Word文档列表 3.提取文档内数据 4.导入到Exce ...
- Python爬虫示例1:获取豆瓣电影正在热播的电影信息
个人的第一个python爬虫程序,如果错误,请指正. 程序用于抓取豆瓣电影正在热播的电影信息,详细代码如下所示: #!/usr/bin/python # -*- coding: UTF-8 -*- i ...
- python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格
豆瓣是一个社区网站,创立于2005年3月6日.该网站以书影音起家,提供关于书籍,电影,音乐等作品信息,其描述和评论都是由用户提供的,是Web2.0网站中具有特色的一个网站. 豆瓣电影top250网址: ...
- python 列表写入excel_[python]获取一年日历数据并写入excel表格中
[Asm] 纯文本查看 复制代码# coding=gbk import requests from bs4 import BeautifulSoup import xlwt # 获取一年数据,以字典返 ...
- python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...
豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...
- Python爬虫实战,pyecharts模块,Python实现豆瓣电影TOP250数据可视化
前言 利用Python实现豆瓣电影TOP250数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pandas模块 pyecharts模块: 以及一些 ...
- python爬取豆瓣电影信息数据
题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...
最新文章
- mysql 修复_修复崩溃的Mysql
- spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient
- NYOJ_1013除法表达式
- 深度学习中的激活函数与梯度消失
- exchange管理控制台命令行 查看邮箱数据库信息、接收连接器、发送连接器 相关命令
- Android 源码编译过程
- leetcode - Search in Rotated Sorted Array II
- CISA 发布关于 Treck TCP/IP 栈中新漏洞的 ICS 安全公告
- 20 Tips to Simplify Your Digital and Online Life
- android 入门-android Studio 配置
- 回顾2018,展望2019
- Python+数据分析+机器学习,数据科学家最少必要知识库!
- 用U3D寻找看电视的感觉!!
- html代码向下移动,在html表格中向下移动Jquery
- vasp544编译安装
- 海康linux 密码忘记,linux下调用海康sdk
- 清理C盘内存有用的办法
- Linux系统下如何复制粘贴文件(待更新)
- Micrometer中文文档
- oracle diagnosticdest,Oracle 11g自动诊断信息库(Automatic Diagnostic Repository,ADR)概述
热门文章
- mysql 启用myisam_mysql存储引擎之myisam学习
- UVA804 Petri网模拟 Petri Net Simulation
- python生成pyc_如何生成pyc/pyo/pyd文件
- Docker 基础篇
- Java 基础语法(键盘录入数据,水仙花数,各类循环,random,数组,内存分配,方法,面向对象、封装、this、构造方法、标准类、API)
- 前端开发入门到实战:HTML5 video视频播放
- 3.搭建Vue开发环境
- 候选人选票程序:设计一个候选人选票程序。假设有3个候选人,在屏幕上输入要选择的候选人姓名,有10个人进行投票,最后输出每个人的得票结果。
- 网络时代知识产权保护 铃声下载动了谁的奶酪
- 【Linux SPI Framework】