“与众不同”的TOP250详细数据采集,pyecharts世界地图多维可视化展示

news2024/11/13 9:43:29

“与众不同”的TOP250详细数据采集,pyecharts世界地图多维可视化展示

前言:

本文描述爬取逗瓣250的电影详细信息,包括对电影名、评分、评论人数、电影名言、导演演员信息、电影年份、电影国家、电影类型等详细爬取;

并且针对爬取的数据使用Numpy、pandas等进行了数据处理、拆分、分组等操作,最后使用pyechatrs对数据进行柱状图、实时排序图、世界地图、饼图等可视化展示。

项目pyecharts可视化展示(部分)世界地图、实时排序图等:

1929至2013年每年发布的电影根据评分排序展示:

在这里插入图片描述

电影发布国家统计展示:

在这里插入图片描述

爬虫代码(.py文件):


import requests
from lxml import etree
import csv
import time




def get_source(com_url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
    }
    res = requests.get(com_url, headers=header)
    html = res.content.decode('utf-8')
    return html

# 解析数据
def get_data( html):
        tree = etree.HTML(html)
        divs = tree.xpath('//div[@class="info"]')
        # print(divs)
        lis_data = []
        for div in divs:

            # 标题
            title = div.xpath('./div[@class="hd"]/a/span[@class="title"]/text()')[0].strip()###['龙猫']  龙猫
            # print(title)
            #电源详情1
            info1 = div.xpath('./div[@class="bd"]/p/text()[1]')[0].strip()
            # print(info1)
            #电影详情2
            info2 = div.xpath('./div[@class="bd"]/p/text()[2]')[0].strip()
            # print(info2)

            # 评分
            score = div.xpath('./div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0].strip()
            # print(score)
            # 评价人数
            evaluate = div.xpath('./div[@class="bd"]/div[@class="star"]/span[4]/text()')[0].strip()
            # print(evaluate)
            # 引用
            quote = div.xpath('./div[@class="bd"]/p[@class="quote"]/span/text()')
            if quote:
                quote = quote[0]
            else:
                quote = ''



            lis_data.append([title, score, evaluate, quote, info1, info2, ])    ###[[],[],[],.....]
        # print(lis_data)

        with open('D:/爬取的内容/豆瓣TOP250/movie_data.csv', 'a+', encoding='utf-8-sig', newline='') as csvFile:
            for rows in lis_data:
                csv.writer(csvFile).writerow(rows)



with open('D:/爬取的内容/豆瓣TOP250/movie_data.csv', 'a+', encoding='utf-8-sig', newline='') as csvFile:
    csv.writer(csvFile).writerow(['title', 'score', 'evaluate', 'quote', 'info1','info2'])
csvFile.close()

for i in range(10):
            time.sleep(2)
            page = (i) * 25
            com_url = 'https://movie.douban.com/top250?start=' + str(page)
            h = get_source(com_url)
            print('第%d页保存完成' % i)
            get_data(h)

数据处理可视化代码(.ipynb文件):

数据处理:

1、需要对评论人数,数值提取处理

2、对info1 进行分割提取,导演

3、对info2 进行分割 提取 电源年份 、 国家、 电源类型

import pandas as pd
df = pd.read_csv("movie_data.csv" , encoding = 'utf-8-sig')
df
df.columns=['电影名','评分','评论人数','名言','info1','info2']
df

pls = []
for v in df['评论人数']:
    pls.append(int(v.split('人')[0]))
df['评论数'] =pls
df 

dy =[]


for v in df['info1']:
    sub1 = v.split('导演:')[1]
#     print(sub1[1])
    sub2= sub1.split(' ')[1]
#     print(sub2)
    dy.append(sub2)
len(dy)
df['导演'] = dy 
df     


time=[]
city=[]
jq=[]
import re
for s in df['info2']:

    ls=s.split(' / ')
#     print(ls)
    sj = re.findall('\d+',ls[0])[0]
#     print(sj)
    time.append(sj)
    
    city.append(ls[1])
    jq.append(ls[2])
    if len(ls)!=3:
        print(ls)
        print(s)

# 复杂情况:
# ['1961(中国大陆) / 1964(中国大陆) / 1978(中国大陆)', '中国大陆', '剧情 动画 奇幻 古装']
# ['1982(中国大陆)', '中国大陆', '剧情 历史']

# '美国 加拿大'

# '剧情 犯罪'

df['电影年份'] = time
df['国家']=city
df['电影类型'] = jq

df 

数据处理结果:

在这里插入图片描述

pyecharts可视化:

1、评价数最多的电影TOP10

在这里插入图片描述

2、评分排名可视化

在这里插入图片描述

3、 电影类型分布展示

在这里插入图片描述

4、电影国家分布统计

在这里插入图片描述

源码获取:

网盘链接:

链接:https://pan.baidu.com/s/1F5J33FoX5iVKXLzPeg8z1A?pwd=xx78
提取码:xx78

(求求点个关注呀,您的关注点赞是我持续创作的动力。求求点个关注呀,您的关注点赞是我持续创作的动力。求求点个关注呀,您的关注点赞是我持续创作的动力)

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

EasyExcel 低内存导出大数据量的Excel方案探索 50万行 50列 (附:实现代码)

文章目录1.前言2.准备工作3.导出测试3.1.单次查询、全量导出3.2. 多次查询,多个文件,单次写入3.3.多次查询,多个文件,多次写入3.4.多线程导出探索3.5.文件打包成ZIP3.6.响应给客户4.实现代码5.结语1.前言 最近接到一个需求&#…

唤醒手腕 Java 后端 Springboot 结合 Redis 数据库学习笔记(更新中)

Redis 基本介绍 Redis Introduction The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 基本概念:redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持…

没有资源没有人脉,23年跨境电商仍值得入局!

随着经济全球化的不断深入,越来越多人关注到跨境电商行业。作为新兴的贸易业态,跨境电商拥有多边化、交易链条短等传统电商无法比拟的优势,能够有效地推广更多中国优质产品到全球市场上,在促进国家经济发展过程中发挥着举足轻重的…

谷歌推出新优化器Lion:优化算法的符号发现

文章目录谷歌推出新优化器Lion:优化算法的符号发现Lion VS AdamW论文实验1.图像分类2.视觉语言对比学习3.扩散模型4.语言建模和微调5.与其他流行优化器的比较超参数设置小结谷歌推出新优化器Lion:优化算法的符号发现 优化器即优化算法,优化器…

加入蓝精灵协会的快速指南

了解使用蓝精灵协会应用程序所需的所有要点。 什么是蓝精灵协会? 蓝精灵协会是唯一一个由蓝精灵官方品牌支持的 PFP 项目。 我们目前正处于这个交互式项目的第二阶段,重点是通过游戏化的 Web3 体验建立一个大型社区。下面是参与游戏的基本步骤&#xff0…

C++进阶:二叉搜索树

文章目录1 二叉搜索树概念2 二叉搜索树的实现2.1 结点的定义2.2 二叉搜索树的插入2.2 二叉搜索树的查找2.3 二叉搜索树的删除2.4 二叉搜索树的默认成员函数2.4.1 拷贝构造2.4.2 析构函数2.4.3 赋值重载3 二叉搜索树的应用3.1 k模型3.2 kv模型4 二叉搜索树的性能分析1 二叉搜索树…

【字典转模型 Objective-C语言】

一、点按钮,弹出的这个效果,这实际上是个Label, 这实际上是一个Label,点按钮弹出的这个效果, 设置一个Label的背景色、前景色、透明度、等等, 让它加进来,然后通过动画让它隐藏掉, 这就是,这个效果的实现思路, 咱们这个效果,先稍微往后放一放, 这个并不是重点…

匈牙利算法学习笔记

匈牙利算法学习笔记1. 前言1.1 二分图1.2 二分图匹配2. 匈牙利算法(Hungarian Algorithm)2.1 基础概念2.2 实现步骤参考链接:1. 14-4:匈牙利算法 Hungarian Algorithm1. 前言 1.1 二分图 二分图通常针对无向图问题。假设G(V,E)G(V,E)G(V,E)是一个无向图…

Linux搭建gitlab服务器

第一步:切换到root用户 sudo root或者 sudo -i第二步:执行以下命令 yum install curl openssh-server openssh-clients postfix cronie -y​systemctl start postfix.servicechkconfig postfix onlokkit -s http -s ssh第三步:添加Gitlab&…

如何理解 Python 的赋值逻辑

摘要: 如果你学过 C 语言,那么当你初见 Python 时可能会觉得 Python 的赋值方式略有诡异:好像差不多,但又好像哪里有点不太对劲。 本文比较并解释了这种赋值逻辑上的差异。回答了为什么需要这种赋值逻辑以及如何使用这种赋值逻辑…

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?有用户使用的Acer新蜂鸟Swift3电脑一开机的时候,没过几秒电脑桌面就变成了蓝屏的了,通过强制重启之后依然会重复这个问题,那么这个问题要怎么去进行解决了,今天将你怎么重…

Android 反序列化漏洞攻防史话

Java 在历史上出现过许多反序列化的漏洞,但大部分出自 J2EE 的组件。即便是 FastJSON 这种漏洞,似乎也很少看到在 Android 中被实际的触发和利用。本文即为对历史上曾出现过的 Android Java 反序列化漏洞的分析和研究记录。 序列化和反序列化是指将内存数…

k8s-kubectl命令

文章目录一、kubectl 基本命令1、陈述式资源管理方法:2、声明式资源管理办法二、基本信息查看三、项目的生命周期创建kubectl run命令四、金丝雀发布(Canary Release)——陈述式管理方法五、声明式管理方法kubectl create 和 kubectl apply区别一、kubectl 基本命令 1、陈述式…

交叉验证 | 机器学习

1、交叉验证 1.1概念 交叉验证的核心思想:对数据集进行多次划分,对多次评估的结果取平均,从而消除单次划分时数据划分得不平衡而造成的不良影响。因为这种不良影响在小规模数据集上更容易出现,所以交叉验证方法在小规模数据集上更…

Profinet转ModbusTCP网关连接昆仑通态触摸屏配置案例

本案例是模拟将Modbus TCP 设备数据接入到西门子PROFINET 网络中。 使用设备为西门子 S7-1500 型 PLC, Profinet转ModbusTCP网关。MODBUS 从站昆仑通态触摸屏。 配置方法: 打开博图,新建项目并添加站点。 添加1513PLC。 设置好IP并处于联网状态 导入Pr…

【前端】小程序开发入门:安装开发工具、目录结构与项目配置

文章目录前期准备目录结构app.jsonpageswindow其他前期准备 开发小程序要先申请一个对应的AppID:微信小程序 (qq.com) 微信官方小程序开发文档:微信开放文档 (qq.com) 然后安装一个小程序开发工具: 选择稳定版: 安装后打开&…

组合由于继承

目录 前言: 1.什么是继承? 2.继承的劣势、问题? 3.组合相比继承有哪些优势? 4、如何判断该用组合还是继承? 参考资料 前言: 我们在平时日常开发设计的过程中,经常会有人提到一条经典的设…

音视频基础之封装格式与音视频同步

封装格式的概念 封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。 一般来说,视频文件的后缀名就是它的封装格式。 封装的格式不一样,后缀名也就不一样。 比如&a…

MMPBSA结合自由能计算原理

MMPBSA结合自由能计算原理 计算结合自由能的方法有很多,例如,热力学积分(Thermodynamic Integration,TI)、自由能微扰(Free Energy Perturbation,FEP)、MM/PB(GB)SA、线性相互作用能…

安科瑞消防应急照明和疏散指示系统在城市隧道的应用分析

【摘要】:随着城市的发展,交通量越来越大,交通状况越来越复杂,城市隧道的修建也随之变多。当隧道照明正常时,隧道内路面有足够的照度,隧道中快速行驶的汽车,大部分司机不用打开车灯或只需打开车…