Python爬虫和数据可视化案例

python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示 阅读详情

效果展示:

 

实现目标:

  • 构建一个网页应用将美团美食数据以可视化的形式展示出来:
  • 在页面顶部,展示一个标题为“美团成都餐饮店铺分析”的大标题;
  • 在页面中央,展示三个列,分别用于显示区域选择框、性价比排行榜和店铺信息;
  • 区域选择框位于第一列,用于选择不同的区域,可选项为“成华区”、“金牛区”、“龙泉驿区”、“郫都区”、“青白江区”、“双流区”、“温江区”、“武侯区”、“新都区”和“新津区”;
  • 选择不同的区域后,第一列会显示该区域的店铺类型分布饼图,第二列会显示该区域的性价比排行榜,第三列会显示该区域的店铺信息;
  • 性价比排行榜和店铺信息都是按照性价比从高到低排序;
  • 店铺信息包括店铺名、评分、商圈、人均消费、店铺类型和评论数,并且每个关键字都能单独进行排序;
  • 代码_爬虫部分:

  • 注意:url内的参数需要自己填充!
  • import requests # 数据请求模块
    import csv
    import time
    import random
    
    areaList = [
        '锦江区美食',
        '青羊区美食',
        '金牛区美食',
        '武侯区美食',
        '成华区美食',
        '龙泉驿区美食',
        '青白江区美食',
        '新都区美食',
        '温江区美食',
        '双流区美食',
        '郫都区美食',
        '新津区美食',
    ]
    areaFileNameList = [
        'meituandata_jinjiangqu.csv',
        'meituandata_qingyangqu.csv',
        'meituandata_jinniuqu.csv',
        'meituandata_wuhouqu.csv',
        'meituandata_chenghuaqu.csv',
        'meituandata_longquanyiqu.csv',
        'meituandata_qingbaijiangqu.csv',
        'meituandata_xinduqu.csv',
        'meituandata_wenjiangqu.csv',
        'meituandata_shuangliuqu.csv',
        'meituandata_piduqu.csv',
        'meituandata_xinjinqu.csv',
    ]
    areaDict = dict(zip(areaList,areaFileNameList))
    for areaName,fileName in areaDict.items():
    
        f = open(fileName, mode = 'a+', encoding = 'utf-8-sig', newline = '')
        csv_write = csv.DictWriter(f, fieldnames = [
            '店铺名',
            '评分',
            '商圈',
            '人均消费',
            '店铺类型',
            '评论数',
            '详情页',
        ])
        # 写入表头
        csv_write.writeheader()
    
        for page in range(0, 96, 32):
            time.sleep(random.randint(0,10))
    
            # url的?后面的都是请求参数
            url =  'https://apimobile.meituan.com/group/v4/poi/pcsearch/59'
            # url请求参数如下
            data = {
                'uuid' : '******************.**********.*.*.*',
                'userid' : '**********',
                'limit' : '32',
                'offset' : page,
                'cateId' : '-1',
                'q' : areaName,
                'token' : '*****_********-r4zWDLQIsQKrGXHtsMPkKY_1-0pId9Uq9V4KQN-YAwbULseE39PdnciHejVjMdAAAAADjGAA**********_iXXyJ3C1JqbEAfC8WfQARbM5l3a-g8phAMaWn-DDAiq1kc2oqSd71r'
            }
    
            # 请求头伪装
            headers = {
                'Referer' : 'https://cd.meituan.com/', # 防盗链 不加这个可能会报403,如果还不能访问,那就还要加上cookie
                'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
            }
            # 获取数据
            response = requests.get(url=url, params=data, headers=headers)
            # 解析数据
            searchResult = response.json(strict=False)["data"]["searchResult"]
            for index in searchResult: # 字符串格式化
                href = f'https://www.meituan.com/meishi/{index["id"]}/'
                dit = {
                    '店铺名' : index["title"],
                    '评分' : index["avgscore"],
                    '商圈' : index["areaname"],
                    '人均消费' : index["avgprice"],
                    '店铺类型' : index["backCateName"],
                    '评论数' : index["comments"],
                    '详情页' : href,
                }
    
            # 保存数据
                csv_write.writerow(dit)

    代码_可视化部分:

  • 此部分代码可直接使用!
  • 注意:爬取的数据存放的.csv文件要放在代码同级目录下的data文件夹下
  • import streamlit as st
    import matplotlib.pyplot as plt
    import pandas as pd
    st.set_page_config(page_title="myPage", page_icon="🧊", layout="wide")
    plt.rcParams['font.sans-serif'] = 'SimHei'  # 使用SimHei字体显示中文
    plt.rcParams['axes.unicode_minus'] = False  # 使用 ASCII 中的 '-' 符号来代替unicode中的 '-',防止乱码
    
    
    file_suffix_dict = {
        '成华区': 'chenghuaqu',
        '金牛区': 'jinniuqu',
        '龙泉驿区': 'longquanyiqu',
        '郫都区': 'piduqu',
        '青白江区': 'qingbaijiangqu',
        '双流区': 'shuangliuqu',
        '温江区': 'wenjiangqu',
        '武侯区': 'wuhouqu',
        '新都区': 'xinduqu',
        '新津区': 'xinjinqu',
    }
    
    def load_data(area:str):
        df = pd.read_csv(f'data/meituandata_{file_suffix_dict[area]}.csv',encoding='utf-8')
        df['性价比']=df['评分']*10+1/df['人均消费']*500
        return df
    
    if 'curr_df' not in st.session_state:
        st.session_state['curr_df'] = load_data('成华区')
    def get_file_path(area:str):
        return f'data/meituandata_{file_suffix_dict[area]}.csv'
    
    data_dir = 'data/'
    
    df = pd.read_csv(data_dir+'meituandata_chenghuaqu.csv',encoding='utf-8')
    
    
    def on_select_area():
        st.session_state['curr_df'] = load_data(st.session_state['area'])
    
    
    st.title('美团成都餐饮店铺分析')
    col1,col2,col3= st.columns([1,1,1.5])
    
    with col1:
        st.selectbox('选择区域',file_suffix_dict.keys(),key='area',on_change=on_select_area)
        dl = st.session_state['curr_df']['店铺类型']
        type_dict = {}
        for i in dl:
            type_dict[i] = type_dict.get(i,0)+1
        fig = plt.figure()
        kl = [str(i) for i in type_dict.keys()]
        print(kl)
        
        plt.pie(type_dict.values())
        plt.axis('equal')
        plt.title('店铺类型分布')
        plt.legend(labels=kl,loc='upper center',bbox_to_anchor=(0.5,-0.1),ncol=4)
        st.pyplot(fig,use_container_width=True)
    
    
    with col2:
        tdf = st.session_state['curr_df'][['店铺名','性价比']]
        tdf.sort_values(by='性价比',ascending=False,inplace=True)
        st.subheader('性价比排行榜')
        st.dataframe(tdf,hide_index=True,use_container_width=True)
        
    with col3:
        t2df = st.session_state['curr_df'][['店铺名','评分','商圈','人均消费','店铺类型','评论数']]
        st.subheader('店铺信息')
        st.dataframe(t2df,hide_index=True,use_container_width=True)

    注意事项:

  • 由于使用了streamlit包,由于未知原因,楼主自己也不知道为什么当安装的streamlit版本低于1.23.0时,显示界面将展示不完全,所以最好安装1.23及以上版本(python3.6最高支持1.10)

【数据可视化】通过使用网络爬虫对数据爬取并进行可视化分析 使用网络爬虫技术爬取课程中心数据,利用pandas和pyecharts进行数据分析和数据可视化 阅读详情

相关推荐

基于Python的网络爬虫与数据可视化分析——代码

原理及技术报告请点击此处查看 一、爬虫部分 # -*- coding:utf-8 -*- from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium import webdriver from bs4 impo

weixin_43917062的博客 1万+

Python大作业——爬虫+可视化+数据分析+数据库(可视化篇)

Python大作业——爬虫+可视化+数据分析+数据库(可视化篇)一、登录界面由于该程序会通过与数据库的交互来实现歌曲收藏等功能,故需要首先设计一个进行登录注册的界面登录界面将与主界面同大小,且为了方便布局,设置为固定

m0_59162248的博客 2414

利用网络爬虫从猎聘网抓取IT类招聘信息及其数据可视化分析(python+mysql未使用爬虫框架)

  目录   一、前言 1.1 关于我的水平以及该爬虫实现难度和代码中的小bug 1.2 关于用到的参考文档和参考书籍 1.3 关于数据采集量过小以及可能存在的数据冗余和数据丢失问题的说明 二、python爬虫抓取IT类招聘信息的实现 2.1 代码 2.2 代码的部分补充说明 2.2.1 getEntry(html) 2.2.2 getCountryEntry(entry) ...

进阶笔记 7314

Python爬虫及数据可视化网页实现

学前基础 掌握Python基本语法(因此直接从教程P15开始即可); 掌握一丢丢计网(静态网页,动态网页、get/post请求); 掌握一丢丢前端(看得懂HTML基本标签,能写一个啥也不是的登陆界面) ; 掌握一丢丢数据库(装过SQL软件,知道这玩意有增删改查罢了,详细语法不了解 血泪教训!) ; 了解正则、使用过Pycharm…

m0_59162248的博客 4014

Python项目-基于Python的网络爬虫与数据可视化系统

在当今数据驱动的时代,网络爬虫和数据可视化已成为获取、分析和展示信息的重要工具。本文将详细介绍如何使用Python构建一个完整的网络爬虫与数据可视化系统,该系统能够自动从互联网收集数据,进行处理分析,并通过直观的图表展示结果。

exlink2012的专栏 2632

Python网络爬虫与数据可视化实战教程

在当今的数据驱动时代,网络爬虫作为自动化获取网络信息的一种重要技术,在IT领域拥有广泛的应用。Python语言因其简洁易学、丰富的第三方库支持,成为开发网络爬虫的首选语言。本章将为读者介绍网络爬虫的基础概念、基本原理及其在Python中的实现方式。

weixin_42588672的博客 2015

基于Python的网络爬虫与数据可视化分析

网络爬虫技术,别名“网络蜘蛛”,指的就是一种通过依照既定程序自动获取网页信息或脚本的技术。其可以在互联网当中帮助搜索引擎下载各类信息资料,并通过依次进行数据的采集和分析处理。最后完成数据的统一存储。当程序处于正常运行阶段时,爬虫会从一个或多个初始URL开始下载网页内容,随后依托搜索方式或内容匹配法将网页中其所需内容进行精准“抓取”,与此同时爬虫也会不间断地从网页中获取新URL。当爬虫检索到的信息满足停止条件时将自动停止检索。

libaiup的博客 7591

Python网络爬虫与数据可视化分析综合项目

Plotly是一个强大的JavaScript库,用于创建交互式图表,它可以在浏览器中生成交云动图表。Python中的Plotly库是这一功能的接口,它提供了易于使用的语法来创建复杂的图表。Dash是Plotly推出的用于构建交互式Web应用的框架。Dash应用可以通过Python编写,无需编写任何JavaScript代码。# 使用Plotly Express绘制散点图# 展示图形fig.show()在上述代码中,我们使用Plotly Express的scatter。

weixin_36369848的博客 1544

Python 网络爬虫及数据可视化

目录 1项目背景 2 1.1 Python的优势 2 1.2 网络爬虫 2 1.3 数据可视化 2 1.4 Python环境介绍 2 1.4.1 简介 2 1.4.2 特点 3 1.5 扩展库介绍 3 1.5.1 安装模块 3 1.5.2 主要模块介绍 3 ① pandas模块 3 ② requests模块 4 ③ bs4模块 4 ④ selenium模块 4 ⑤ matplotlib模块 4 ⑥ seaborn模块 4 ⑦ pyecharts模块 5 2需求分析 5 2.1 网络爬虫需求 5 2.2 数据

gezongbo的博客 4万+

Python网络爬虫与数据可视化项目实战

数据可视化的目标是将数据背后隐藏的规律和洞察以直观的方式呈现出来。它不仅帮助人们快速理解数据,还能揭示数据之间的关系,支持决策者做出明智的选择。为了达到这一目标,可视化设计应遵循以下原则:准确性:确保图表准确无误地反映数据。简洁性:去除不必要的装饰,使图表简洁明了。相关性:展示的数据应与分析目标相关。可读性:图表应易于阅读,确保信息传递无误。可解释性:图表应易于解释,即使非专业人士也能理解。

weixin_42513870的博客 977

Python实战:网络爬虫与交通拥堵数据可视化

时间序列是一组按照时间顺序排列的数据点,这些数据点通常是按照相同的间隔收集的。时间序列分析是一种统计方法,通过分析过去的时间点数据,来识别数据中的模式、趋势和季节性变化,进而对未来的数据进行预测。时间序列的类型一般可以分为以下几种:连续时间序列:数据点是连续采集的。离散时间序列:数据点是按照特定时间间隔采集的。周期性时间序列:数据展示出明显的周期性变化,如每年的季节变化。趋势时间序列:数据随着时间的推移呈现出上升或下降的趋势。

weixin_36064575的博客 439

Python实验1——网络爬虫及数据可视化

Python实验1——网络爬虫及数据可视化 文章目录Python实验1——网络爬虫及数据可视化前言1. 实验目标与基本要求1.1 实验目标1.2 基本要求2. 主要知识点、重点与难点2.1 主要知识点2.2 重点2.3 难点3. 实验过程设计3.1 实验设计流程图3.2 数据获取与处理3.2.1 龙虎榜数据3.2.1.1 获取网页静态文本3.2.1.2 获取需要的数据3.2.1.3 存储到数据库中3.2.2 个股数据获取与处理3.2.2.1 获取网页静态文本3.2.2.2 获取需要的数据3.2.2.3 存储

ShowMeTheCod3的博客 3469

3D打印切片软件Cura及CuraEngine原理分析

引言         年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件。         自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的。我一向都觉得比起自己写代码来,读别人的代码是一个漫又而痛苦的过程,读者的思想与写者总有偏差,往往又无法验证自己的猜想是否正确,只叹人脑不是电脑,无法把眼前的代码从头到尾执行一遍...

AiDiShengDeXiaoWu的博客 4420

基于Python+网络爬虫的兼职招聘就业信息数据可视化分析

随着信息技术时代的降临,当今世界信息化水平也越来越高。越来越多的招聘信息在网络上面发布,这就使得应聘者需要在眼花缭乱的招聘信息不知道如何选择最合适自己的工作。因此需要对这些海量的招聘信息进行更深入的更高层次的分析。系统通过网络爬虫技术对网络上海量的招聘信息进行爬取,并对其进行数据清洗工作,对清洗后的工作进行数据分析。实现了对爬取到的数据信息进行分类查看,模糊查询以及多条件联合查询,按关键字对招聘信息进行爬等功能。随着大数据分析技术日渐成熟。

qq_1445749146的博客 8176

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1718

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 290

基于Python网络爬虫+Tkinter实现城市天气预报和数据可视化分析设计

获得初始的URL地址之后,首先需要爬取对应URL地址中的网页,爬取了对应的URL地址中的网页后,将网页存储到原始数据库中,并且在爬取网页的同时,发现新的URL地址,同时将已爬取的URL地址存放到一个URL列表中,用于去重及判断爬取的进程。在编写爬虫的时候,一般会设置相应的停止条件。定义high_nums数组,从dict数据中取出的气温是格式为“高温 30℃”的字符串,先通过[3,5]截取出我们所需的气温,再用int()转为整形变量,这样子就获得了我们所需的数据格式,可在纵坐标上从低到高按顺序排列。

叶绿体不忘呼吸 1847

保姆级教程:用GATK4分析重测序数据,从fq.gz到vcf文件一步不落

本文提供了一份详细的GATK4重测序数据分析教程,涵盖从原始fq.gz文件到最终vcf文件的完整上游分析流程。通过Miniconda环境配置、数据质控、序列比对、变异检测等步骤的逐步指导,帮助生物信息学研究人员掌握标准流程,特别适合Linux命令行基础薄弱的研究者学习实践。

weixin_28366053的博客 483

基于Python的网络爬虫爬取天气数据可视化分析

本文设计了一个基于Python的网络爬虫程序,用于抓取北京、上海、广州、深圳四个城市2018年空气质量数据。程序采用Requests库发起HTTP请求,BeautifulSoup解析网页内容,通过URL管理器、网页下载器和解析器三个模块协同工作。数据存储为CSV文件后,使用Pandas进行清洗分析,并借助Pyecharts可视化展示各城市AQI走势和空气质量等级分布。系统实现了从数据采集、处理到分析展示的全流程,为城市空气质量研究提供了有效的数据支持。测试结果表明,该爬虫程序运行稳定,能够准确获取目标数据并

毕业作品网站 1万+

【生成数据集EXCEL文件】使用生成对抗网络GAN生成数据集:输出生成数据集EXCEL

生成器的任务是接收随机噪声向量作为输入,并尽可能生成与真实数据相似的样本,而判别器则是一个二分类器,旨在区分输入的样本是来自生成器生成的,还是来自真实数据。在训练过程中,生成器和判别器通过对抗学习的方式相互博弈,生成器的目标是生成足以欺骗判别器的样本,而判别器的目标则是尽可能准确地判断样本的真实性。GAN网络在多个领域展现了强大的能力,能够生成与训练数据分布相似的新数据,包括但不限于图像生成、图像风格转换、超分辨率、数据增强、视频生成、自然语言处理、医学图像处理以及游戏与虚拟现实等。

hustef的博客 1521

鸿蒙OS开机动画背后的秘密:从代码到视觉的完整解析(附源码分析)

本文深入解析了鸿蒙OS开机动画的系统级实现原理。从bootanimation服务的启动配置、与Render Service的协同,到基于VSync信号的帧率同步与绘制流水线,结合OpenHarmony源码进行了逐行解读。文章揭示了其事件驱动的优雅退出机制,并探讨了视频支持、多屏适配等高级特性与定制化可能,为开发者理解鸿蒙图形子系统提供了硬核技术视角。

sony5的博客 972

python爬虫数据可视化

另外,数据可视化也可以做得更复杂和深入,比如使用不同的图形类型、添加颜色和标签、改变轴的尺度等。你还可以根据你的需求和目标来创建更复杂的图形,比如散点图、箱线图、桑基图等。你还可以根据你的需求和目标来创建更复杂的图形,比如散点图、箱线图、桑基图等。你还可以根据你的需求和目标来创建更复杂的图形,比如散点图、箱线图、桑基图等。你还可以根据你的需求和目标来创建更复杂的图形,比如热力图、桑基图等。好的,让我们继续探索一些更复杂的数据可视化应用。好的,让我们继续探索一些更高级的数据可视化应用。

分享likeshop开发知识 3278

光伏逆变器在环测试解决方案

光伏行业是利用太阳能光辐射将其转化为可用电能的行业。近年来,为应对气候变化和能源安全等挑战,全球对清洁能源的需求不断增长。太阳能作为最具潜力和可再生的能源之一,被视为替代传统化石能源的重要选择,光伏行业因此得到了迅猛发展,并在全球范围内得到了广泛应用。许多国家和地区都将光伏技术作为关键的能源发展方向。尤其是在新兴和发展中国家,光伏发电具有巨大的增长潜力,将成为未来市场竞争的重点。随着规模化生产的推进,光伏组件的制造成本不断降低。

shiwei0813的博客 959
上一篇: C++报错提示某类名不是类或命名空间名称
下一篇: python爬取数据保存到csv文件显示乱码
你不是猫
博客等级 码龄4年 30粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值