Python爬取豆瓣电影+数据可视化,爬虫教程!

1. 爬取数据

1.1 导入以下模块

import os
import re
import time
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from openpyxl import Workbook, load_workbook

1.2 获取每页电影链接

def getonepagelist(url,headers):try:r = requests.get(url, headers=headers, timeout=10)r.raise_for_status()r.encoding = 'utf-8'soup = BeautifulSoup(r.text, 'html.parser')lsts = soup.find_all(attrs={'class': 'hd'})for lst in lsts:href = lst.a['href']time.sleep(0.5)getfilminfo(href, headers)except:print('getonepagelist error!')

1.3 获取每部电影具体信息

def getfilminfo(url,headers):filminfo = []r = requests.get(url, headers=headers, timeout=10)r.raise_for_status()r.encoding = 'utf-8'soup = BeautifulSoup(r.text, 'html.parser')

1.4 保存数据

def insert2excel(filepath,allinfo):try:if not os.path.exists(filepath):tableTitle = ['片名','上映年份','评分','评价人数','导演','编剧','主演','类型','国家/地区','语言','时长(分钟)']wb = Workbook()ws = wb.activews.title = 'sheet1'ws.append(tableTitle)wb.save(filepath)time.sleep(3)wb = load_workbook(filepath)ws = wb.activews.title = 'sheet1'ws.append(allinfo)wb.save(filepath)return Trueexcept:return False

2. 数据可视化

2.1 导入以下模块

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar

2.2 用pandas模块读取数据

data = pd.read_excel('/home/mw/input/TOP2508837/TOP250.xlsx')
data.head(10)

2.3 各年份上映电影数量柱状图(纵向)

def getzoombar(data):year_counts = data['上映年份'].value_counts()year_counts.columns = ['上映年份', '数量']year_counts = year_counts.sort_index()c = (Bar().add_xaxis(list(year_counts.index)).add_yaxis('上映数量', year_counts.values.tolist()).set_global_opts(title_opts=opts.TitleOpts(title='各年份上映电影数量'),yaxis_opts=opts.AxisOpts(name='上映数量'),xaxis_opts=opts.AxisOpts(name='上映年份'),datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_='inside')],))

2.4 各地区上映电影数量前十柱状图(横向)

def getcountrybar(data):country_counts = data['国家/地区'].value_counts()country_counts.columns = ['国家/地区', '数量']country_counts = country_counts.sort_values(ascending=True)c = (Bar().add_xaxis(list(country_counts.index)[-10:]).add_yaxis('地区上映数量', country_counts.values.tolist()[-10:]).reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title='地区上映电影数量'),yaxis_opts=opts.AxisOpts(name='国家/地区'),xaxis_opts=opts.AxisOpts(name='上映数量'),).set_series_opts(label_opts=opts.LabelOpts(position="right")))

2.5 电影评价人数前二十柱状图(横向)

def getscorebar(data):df = data.sort_values(by='评价人数', ascending=True)c = (Bar().add_xaxis(df['片名'].values.tolist()[-20:]).add_yaxis('评价人数', df['评价人数'].values.tolist()[-20:]).reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title='电影评价人数'),yaxis_opts=opts.AxisOpts(name='片名'),xaxis_opts=opts.AxisOpts(name='人数'),datazoom_opts=opts.DataZoomOpts(type_='inside'),).set_series_opts(label_opts=opts.LabelOpts(position="right")))

最后:如果你对Python感兴趣,想要学习Python,希望可以帮到你,一起加油!以上是给大家分享的Python全套学习资料,都是我自己学习时整理的: 

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片

图片

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

图片

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

图片

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

图片

图片

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

图片

 **学习资源已打包,需要的小伙伴可以戳这里:【学习资料】 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用matplotlib绘制图像分类任务的类别特征空间分布

import matplotlib.pyplot as plt import numpy as np from sklearn.decomposition import PCA from sklearn.datasets import load_iris from mpl_toolkits.mplot3d import Axes3D# 加载示例数据(Iris 数据集) data load_iris() X data.data y data.…

适用于高海拔地区的工业路由器产品

1、西藏背景 西藏,这个位于中国西南部的神秘之地,以其雄伟壮观、神奇瑰丽的自然风光和深厚的文化底蕴,被无数人视为心中的圣地。这里属于高原性气候,具有气温低、气压低,降水少,生态环境十分恶劣。西藏被誉…

python 分析nginx的error.log日志 然后写入到 mongodb当中 并且解决mongodb无法根据id删除数据的问题

废话不多说 直接上代码 import re import os import pymongo import uuid import bson def extract_unresolved_info(log_path):unresolved_info []with open(log_path, r) as file:log_text file.read()lines log_text.split("\n")for line in lines:# 这种属于主…

雷池WAF+Modsecurity安装防护及系统加固

君衍. 一、雷池WAF1、什么是雷池2、什么是WAF3、雷池的功能4、WAF部署架构5、整体检测流程 二、雷池WAF环境依赖1、查看本地CPU架构2、Docker安装2.1 卸载旧版本2.2 安装yum-utils工具包2.3 设置镜像仓库2.4 安装docker2.5 启动docker并查看版本 3、Docker Compose安装3.1 卸载…

QueryClientProvider is not defined

QueryClientProvider is not defined 运行一个svelte的项目,报错如上,前后查找解决不了,然后没办法, 本来是用yarn 安装的依赖,改用npm install,再次运行就成功了

制氢厂氢气泄漏安全监测:氢气传感器守护“氢”安全

随着全球能源结构的转型和清洁能源的需求日益增长,氢能作为一种高效、清洁的能源载体,受到了广泛关注。制氢厂作为氢能产业的重要组成部分,其安全问题也日益凸显。在制氢过程中,氢气泄漏是潜在的安全隐患之一,因此&…

centos 安装zabbix 6.4.16 server client

Zabbix Server 采用源码包部署,数据库采用 MySQL8.0 版本,zabbix-web 使用 nginxphp 来实现。具体信息如下: 软件名 版本 安装方式 Zabbix Server 6.4.16 源码安装 Zabbix Agent 6.4.16 源码安装 MySQL 8.0.28 yum安装 Nginx 1.…

大数据学习之Clickhouse

Clickhouse-23.2.1.2537 学习 一、Clickhouse概述 clickhouse 官网网址:https://clickhouse.com/ ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 OLTP(联机事务处理系统)例如mysql等关系型数据库,在对于存储小数据量的时候&#xff…

基于IDEA调试模式与StopWatch工具类如何优雅实现Java代码执行时间检测统计

目录 1.1、前言1.2、开发环境1.3、传统方式实现1.4、优雅方式实现1.4.1、StopWatch工具简介1.4.2、实现步骤 1.1、前言 作为程序员在我们的日常编码过程中经常需要统计一段代码或者一个方法的执行时间,尤其是当以一个接口的执行响应时间比较长需要优化的时候&#x…

基于PHP技术的校园论坛设计的设计与实现08586

基于PHP技术的校园论坛设计的设计与实现 摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统,以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能,并结合社交化特点,增强…

Vulkan学习——渲染3D模型

摘要:本文简要描述了Vulkan渲染一个3D模型需要做的事情,不会对太细节的内容进行深究。   关键字:Vulkan,Render,3D 源码 1 简介 1.1 Vulkan简介 Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API&#x…

创意无界:探索国产创成式填充的无限潜力

在数字艺术与设计的世界中,创新技术不断涌现,而"创成式填充"无疑是其中的一颗璀璨新星。今天米兔要安利的这款国产ps插件-StartaAI拥有强大的AI功能,其AI扩图和局部重绘更是成为PS创成式填充的国产平替。 什么是创成式填充&#x…

PADS设置板框提示不闭合的解决办法

一般是选中join,提示不闭合,不能转成板框,其实直接点击close就好了,报错提示里就有提示,让用close命令试试

基于SpringBoot扶农助农政策管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

html页面可加密吗?

问:html页面可加密吗? 答:可以。 问:怎样加密? 答:看图:

VSCode无法识别 node、npm

一、前提 电脑新安装了node.js,在cmd查看node和npm版本没有问题,但是在VSCode无法识别 1.cmd查看版本: 2.VSCode报错信息: 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果…

面经-计算机基础

1.计算机⽹络 1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议? 计算机网络体系结构 应⽤层 应⽤层 (application-layer )的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定 义的是应⽤进程(进程:主机中正在运⾏的程序&…

redis,memcached,nginx网络组件

课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd accept(listenfd, &addr, &l…

Eclipse配置Tomcat时无Apache选项问题

有可能你会遇到,安装最新版本Eclipse,但是 Window——Preferences——Servers——Runtime Environments。发现没有Apache选项。,这是因为,默认没有安装J2EE组件,我们可以通过手动安装,来解决这个问题。 一…

硬件实用技巧:cadence Aleego创建焊盘过程

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140110911 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…