2024.4.17 Python爬虫复习day05 可视化

2024-04-14 23:12

本文主要是介绍2024.4.17 Python爬虫复习day05 可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

day05_数据可视化和程序日志

准备web服务器

注意: 记得把source资源到项目中

# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn# 2.创建对象
app = FastAPI()# 3.使用对象接收浏览器请求,并且使用对象给浏览器响应资源
# 注意: get中传入请求的资源路径
@app.get('/')
def func():# 自动跳转首页with open('source/html/index.html', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/{html_name}')
def func(html_name: str):# 自动跳转页面with open(f'source/html/{html_name}', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/images/{img_name}')
def func(img_name: str):with open(f'source/images/{img_name}', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/video/{vi_name}')
def func(vi_name: str):with open(f'source/video/{vi_name}', 'rb') as f:data = f.read()res = Response(data)return res# 4.启动服务器(指定fastapi对象,主机地址,端口号)
uvicorn.run(app,host='127.0.0.1',port=9091)

数据可视化

1.爬取数据

# 1.导包
import requests
import re# 2.准备有效的url
url = 'http://127.0.0.1:9091/gdp.html'
# 3.发送url请求,获取web服务器返回的响应对象
response = requests.get(url)
# 4.从响应对象中提取页面数据,并转为字符串类型
html_str = response.content.decode()
# print(html_str)
# 5.使用正则表达式匹配自己想要的资源
gdp_data = re.findall('<a href=""><font>(.+?)</font>.*?¥(.+?)亿元', html_str, re.S)
print(gdp_data)
# 6.数据保存(目的:为了下一次直接使用)
with open('gdp.txt', 'w', encoding='utf8') as f:f.write(str(gdp_data))

2.读取数据

# 需求: 根据之前爬取的数据进行数据可视化
# 从之前爬取数据存储文件中读出数据
with open('gdp.txt', 'r', encoding='utf8') as f:# 注意: 数据是字符串类型的data = f.read()# 把data转为列表数据也就是'[(...),(...)]' 转变为 [(...),(...)]
# 注意: eval不能随便使用,只是去除两端的引号,让里面的数据变成本身所属类型
gdp_list = eval(data)
print(gdp_list)
print(type(gdp_list))

3.pyecharts制作饼图

echarts: 百度开源的一个数据可视化工具pyecharts: python版本的echarts工具使用pyecharts步骤1.安装: pip install pyecharts2.导包: import pyecharts3.使用: 可以制作饼图,折线图,地图等可视化页面
# 0.定义函数获取要展示的数据
def get_gdp_list():# 从之前爬取数据存储文件中读出数据with open('gdp.txt', 'r', encoding='utf8') as f:# 注意: 数据是字符串类型的data = f.read()# 把data转为列表数据也就是'[(...),(...)]' 转变为 [(...),(...)]# 注意: eval不能随便使用,只是去除两端的引号,让里面的数据变成本身所属类型gdp_list = eval(data)return gdp_list# 1.导包
from pyecharts.charts import Pie
import pyecharts.options as opts# 2.创建饼图对象
pie = Pie(init_opts=opts.InitOpts(width='1500px', height='800px'))# 3.给饼图对象添加数据
# 先获取数据
gdp_list = get_gdp_list()
# 添加数据
pie.add('gdp数据',gdp_list[:10],label_opts=opts.LabelOpts(formatter='{b}:{d}%')
)
# 4.给饼图设置标题
pie.set_global_opts(title_opts=opts.TitleOpts(title='2023_GDP数据',subtitle='斌子制作'))# 5.渲染成页面
# 注意: 默认路径是当前路径下生成render.html页面
# 也可以像下面那样指定页面路径和文件名
pie.render('source/html/my_render.html')

程序日志

知识点:

python中日志模块: logging日志作用:1.查看程序的运行情况2.方便开发人员查看bug3.方便分析用户的行为和喜好日志等级: DEBUG :(数字10代表)调试信息INFO: (数字20代表)正常运行信息WARNING: (数字30代表)警告信息(默认)ERROR: (数字40代表)错误信息CRITICAL: (数字50代表)危险信息日志优先级:  DEBUG < INFO  < WARNING  < ERROR < CRITICAL

入门

# 1.导包
import logging# 2.使用
# 直接运行如下代码,观察结果: 只打印了从warning开始的三行日志信息
# 注意: 默认等级是WARNING: WARNING以及WARNING以上的信息会被打印
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')

格式化输出到控制台

# 1.导包
import logging# 2.使用
# 注意: 如果要修改配置,需要先修改再打印信息才会生效
# 修改日志等级
logging.basicConfig(level=logging.DEBUG,format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s'
)
# 直接运行如下代码,观察结果: 只打印了从warning开始的三行日志信息
# 注意: 默认等级是WARNING: WARNING以及WARNING以上的信息会被打印
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')

格式化输出到文件

# 1.导包
import logging# 2.使用
# 注意: 如果要修改配置,需要先修改再打印信息才会生效
logging.basicConfig(level=logging.DEBUG,  # 修改日志等级format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s',  # 格式化filename='my_log.txt',  # 指定要保存的文件名filemode='w'  # 默认模式是追加a
)
# 日志信息
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')

日志版本web服务器

# 1.导包
from fastapi import FastAPI
from fastapi import Response
import uvicorn
import logging# 2.创建对象
app = FastAPI()# 5.修改日志等级和输出日志到文件
# 注意: 如果要修改配置,需要先修改再打印信息才会生效
logging.basicConfig(level=logging.DEBUG,  # 修改日志等级format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s',  # 格式化filename='web_log.txt',  # 指定要保存的文件名filemode='w'  # 默认模式是追加a
)# 3.使用对象接收浏览器请求,并且使用对象给浏览器响应资源
# 注意: get中传入请求的资源路径
@app.get('/')
def func():# 记录日志信息logging.info('用户访问了首页')# 自动跳转首页with open('source/html/index.html', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/{html_name}')
def func(html_name: str):# 记录日志信息logging.info(f'用户访问了{html_name}资源')# 自动跳转页面with open(f'source/html/{html_name}', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/images/{img_name}')
def func(img_name: str):# 记录日志信息logging.info(f'用户访问了{img_name}图片文件')# 自动跳转图片with open(f'source/images/{img_name}', 'rb') as f:data = f.read()res = Response(data)return res@app.get('/video/{vi_name}')
def func(vi_name: str):# 记录日志信息logging.info(f'用户访问了{vi_name}视频文件')# 自动返回视频资源with open(f'source/video/{vi_name}', 'rb') as f:data = f.read()res = Response(data)return res# 4.启动服务器(指定fastapi对象,主机地址,端口号)
uvicorn.run(app, host='127.0.0.1', port=9099)# 客户端通过: http://127.0.0.1:9099/ 访问

这篇关于2024.4.17 Python爬虫复习day05 可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904284

相关文章

可视化实训复习篇章

前言: 今天,我们来学习seaborn库可视化,当然,这个建立在Matplotlib的基础上,话不多说,进入今天的正题吧!当然,这个是《python数据分析与应用》书中,大家有需求的可以参考这本书。 知识点: Matplotlib中有两套接口分别是pyplot和pyylab,即绘图时候主要导入的是Matplotlib库下的两个子模块(两个py文件)matplotlib.pyplot和matp

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

复习2-20240624

vscode 使用 Javabean (封装性) public class Demo01 {/*1.原则 : 字母 数字 $ _ 中文 除了 这五个 其它都不可以2. 细则 : 数字 不能 开头%hbviunh &hfiureh )nhjrn 7487j -ni +hbiu tgf h

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python