python基础----08-----json、pyecharts模块介绍以及折线图、地图、柱状图的绘制

2023-11-10

一 python变量和json数据的相互转化

json就是 一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互、类似于:
国际通用语言 -英语。

在这里插入图片描述

import json
if __name__ == '__main__':
    # 1. 将python变量转成json(列表->json)
    # 准备列表,列表内每一个元素都是字典,将其转换为JSON
    data = [{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]
    json_str = json.dumps(data)
    print(type(json_str))#<class 'str'>
    print(json_str)
    json_str = json.dumps(data, ensure_ascii = False)
    print(json_str)

    print("====================================")

    # 2. 将python变量转成json(字典->json)
    # 准备字典,将字典转换为JSON
    d = {"name": "周杰轮", "addr": "台北"}
    json_str = json.dumps(d, ensure_ascii = False)
    print(type(json_str))#<class 'str'>
    print(json_str)

    print("====================================")

    # 3. 将json转成python变量(json(实际是字符串)->列表)
    s = '[{"name": "张大山","age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]'
    l = json.loads(s)
    print(type(l))#<class 'list'>
    print(l)

    print("====================================")

    # 4. 将json转成python变量(json(实际是字符串)->字典)
    # 这里与第3点区别是,3无法直接转字典,而4能够直接转字典,所以4优先转成字典
    s = '{"name": "周杰轮", "addr": "台北"}'
    d = json.loads(s)
    print(type(d))#<class 'dict'>
    print(d)

在这里插入图片描述

二 pyecharts模块简介

pyecharts模块 :如果想要 做出数据可视化效果图,可以借助pyecharts模块来完成。
概况:
Echarts是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而Python是门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时pyecharts诞生了。

官网:pyecharts.org。
可以选择语言进行查看pyecharts的文档。
在这里插入图片描述
pyecharts还有一个画廊功能:gallery.pyecharts.org。
pyecharts模块的安装:

pip install pyecharts

三 pyecharts的入门使用

pyecharts有哪些配置选项。
pyecharts模块中有 很多的配置选项,常用到2个类别的选项:

  • 全局配置选项(这里会用到)。set_global_opts,就是帮我们设置标题等内容。
  • 系列配置选项。
from pyecharts.charts import Line
from  pyecharts.options import TitleOpts
from  pyecharts.options import LegendOpts
from  pyecharts.options import ToolboxOpts
from  pyecharts.options import VisualMapOpts
if __name__ == '__main__':
    # 导包,导入Line功能构建折线图对象

    # 得到折线图对象
    line = Line()
    # 添加x轴数据
    line.add_xaxis(["中国", "美国", "英国"])
    # 添加y轴数据
    line.add_yaxis("GDP", [30, 20, 10])

    line.set_global_opts(
        title_opts=TitleOpts(True, "GDP展示", pos_left= "center", pos_bottom = "1%"),   #添加标题
        legend_opts=LegendOpts(is_show=True),#添加图例
        toolbox_opts=ToolboxOpts(is_show=True),#添加工具箱
        visualmap_opts=VisualMapOpts(is_show=True)

    )

    # 生成图表
    line.render()


运行后会生成render.html,我们双击打开它。
在这里插入图片描述
然后在pycharm右上角选择浏览器打开。
在这里插入图片描述

在这里插入图片描述
图例的意思可以看Echarts legend属性使用理解。

四 数据准备

请自行找资料,或者找我。

五 生成折线图

首先打开网页http://www.ab173.com/gongju/json/jsonviewernew.php。通过它我们方便观察长json串的视图,方便在代码取数据。
以美国.txt为例,将所有内容拷贝到上面的网站,
然后:
去掉开头的内容:

jsonp_1629344292311_69436(

在这里插入图片描述
去掉末尾的两个元素:

);

在这里插入图片描述

然后选择格式化,数据变成下图。
在这里插入图片描述

再选择视图,就是下图,这样我们就方便观察json数据了。
在这里插入图片描述

当然,如果你眼力好,可以直接看美国.txt的内容,然后在代码中操作,但是不建议,因为直接看这么长的字符串是很难的。

代码:

"""
演示可视化需求1:折线图开发
"""
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts

# 处理数据
# 1. 读取数据
f_us = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/折线图数据/美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()   # 美国的全部内容

f_jp = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/折线图数据/日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()   # 日本的全部内容

f_in = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/折线图数据/印度.txt", "r", encoding="UTF-8")
in_data = f_in.read()   # 印度的全部内容

# 2. 去掉开头和结尾的非json内容
# 去掉不合JSON规范的开头(这是它自己加的,一般实际开发只有纯json串)
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")
# 去掉不合JSON规范的结尾(这是它自己加的,一般实际开发只有纯json串)
# -2 代表去掉末尾的最后两个元素,因为切片不包括末尾的下标
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]

# 3. JSON转Python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)

# 4. 获取trend key
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']
print(f"trend key数据类型: {type(us_trend_data)}")# trend key数据类型: <class 'dict'>

# 获取日期数据,用于x轴,取2020年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]
print(f"updateDate数据类型: {type(us_x_data)}")# us_x_data数据类型: <class 'list'>

# 获取确认数据,用于y轴,取2020年(到314下标结束. 实际好像不是314,我不太确定它那个数字的含义例如20462501,不过我们不关注)
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
print(f"y轴数据类型: {type(us_y_data)}")# y轴数据类型: <class 'list'>

# 生成图表
line = Line()       # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data)   # x轴是公用的,所以使用一个国家的数据即可
# 添加y轴数据
# label_opts=LabelOpts(is_show=False)的作用是去掉折线图的数字,避免影响观看
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))     # 添加美国的y轴数据
line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))     # 添加日本的y轴数据
line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))     # 添加印度的y轴数据

# 设置全局选项
line.set_global_opts(
    # 标题设置
    title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)

# 调用render方法,生成图表
line.render()
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()

结果:
在这里插入图片描述

取数据对应视图:
在这里插入图片描述
在这里插入图片描述

下图实际好像不是314,我不太确定它那个数字的含义,例如20462501,不过我们不关注,因为实际开发时我们肯定知道对应的年份数据。
在这里插入图片描述

六 数据可视化案例-基础地图使用

"""
演示地图可视化的基本使用
"""
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts

# 准备地图对象
map = Map()
# 准备数据
data = [
#     ("北京", 99),
#     ("上海", 199),
#     ("湖南", 299),
#     ("台湾", 399),
#     ("广东", 499)
# ]
data = [
    ("北京市", 99),
    ("上海市", 199),
    ("湖南省", 299),
    ("台湾省", 399),
    ("广东省", 499)
]
# 添加数据(data是列表,元素是元祖)
map.add("测试地图", data, "china")

# 设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min": 1, "max": 9, "label": "1-9", "color": "#CCFFFF"},
            {"min": 10, "max": 99, "label": "10-99", "color": "#FF6666"},
            {"min": 100, "max": 500, "label": "100-500", "color": "#990033"}
        ]
    )
)

# 绘图
map.render("基础地图.html")

在这里插入图片描述

注意,如果data的省或者直辖市不改成和地图一样的名字,是没有颜色的。
在这里插入图片描述

七 全国疫情地图构建

"""
演示全国疫情可视化地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *

# 1. 读取数据文件
f = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/地图数据/疫情.txt", "r", encoding="UTF-8")
data = f.read()     # 全部数据
# 关闭文件
f.close()

# 2. 取到各省数据
# 将字符串json转换为python的字典
data_dict = json.loads(data)        # 基础数据字典
# 从字典中取出省份的数据
province_data_list = data_dict["areaTree"][0]["children"]

# 处理省份名字,我们的province_name变量必须要与地图的名字匹配,否则不显示颜色.
def handle_pro_name(name):
    tmp = None
    if name == "上海":
        tmp = "上海市"
    elif name == "香港":
        tmp = "香港特别行政区"
    elif name == "天津":
        tmp = "天津市"
    elif name == "北京":
        tmp = "北京市"
    elif name == "广西":
        tmp = "广西壮族自治区"
    elif name == "重庆":
        tmp = "重庆市"
    elif name == "澳门":
        tmp = "澳门特别行政区"
    elif name == "内蒙古":
        tmp = "内蒙古自治区"
    elif name == "宁夏":
        tmp = "宁夏回族自治区"
    elif name == "西藏":
        tmp = "西藏自治区"
    elif name == "新疆":
        tmp = "新疆维吾尔自治区"
    else:
        tmp = name + "省"
    return tmp

# 3. 组装每个省份和确诊人数为元组,并各个省的数据都封装入列表内
data_list = []      # 绘图需要用的数据列表
for province_data in province_data_list:
    province_name = province_data["name"]                   # 省份名称
    province_name = handle_pro_name(province_name)
    province_confirm = province_data["total"]["confirm"]    # 确诊人数
    data_list.append((province_name, province_confirm))     # 上节说过,map.add要的是列表,列表的元素是元祖
    #print((province_name, province_confirm))

# 4. 创建地图对象
map = Map()

# 5. 添加数据
map.add("各省份确诊人数", data_list, "china")

# 6. 设置全局配置,定制分段的视觉映射
map.set_global_opts(
    title_opts=TitleOpts(title="全国疫情地图"),
    visualmap_opts=VisualMapOpts(
        is_show=True,           # 是否显示
        is_piecewise=True,      # 是否分段
        pieces=[
            {"min": 1, "max": 99, "lable": "1~99人", "color": "#CCFFFF"},
            {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"},
            {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"},
            {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+", "color": "#990033"},
        ]
    )
)

# 7. 绘图
map.render("全国疫情地图.html")


结果:
这里注意,新版本的pyecharts(也可能是python解释器的版本)的地图名字,如果和代码中的province_name值不一样,会无法显示颜色,所以我自行加了一个函数handle_pro_name进行处理。
在这里插入图片描述

province_data_list = data_dict[“areaTree”][0][“children”]的结构:
在这里插入图片描述

province_data的结构:
在这里插入图片描述

八 河南省疫情地图绘制

"""
演示河南省疫情地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *

# 读取文件
f = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/地图数据/疫情.txt", "r", encoding="UTF-8")
data = f.read()
# 关闭文件
f.close()

# 获取河南省数据
# json数据转换为python字典
data_dict = json.loads(data)
# 取到河南省数据
cities_data = data_dict["areaTree"][0]["children"][3]["children"]

# 准备数据为元组并放入list
data_list = []
for city_data in cities_data:
    city_name = city_data["name"] + "市"
    city_confirm = city_data["total"]["confirm"]
    data_list.append((city_name, city_confirm))

# 手动添加济源市的数据,因为疫情.txt没有
data_list.append(("济源市", 5))

# 构建地图
map = Map()
map.add("河南省疫情分布", data_list, "河南")
# 设置全局选项
map.set_global_opts(
    title_opts=TitleOpts(title="河南省疫情地图"),
    visualmap_opts=VisualMapOpts(
        is_show=True,           # 是否显示
        is_piecewise=True,      # 是否分段
        pieces=[
            {"min": 1, "max": 99, "lable": "1~99人", "color": "#CCFFFF"},
            {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"},
            {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"},
            {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+", "color": "#990033"},
        ]
    )
)

# 绘图
map.render("河南省疫情地图.html")


结果:

在这里插入图片描述

九 基础柱状图构建

"""
演示基础柱状图的开发
"""
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 使用Bar构建基础柱状图
bar = Bar()
# 添加x轴的数据
bar.add_xaxis(["中国", "美国", "英国"])
# 添加y轴数据
bar.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position="right"))
# 反转x和y轴
bar.reversal_axis()
# 绘图
bar.render("基础柱状图.html")

# 反转x轴和y轴

# 设置数值标签在右侧

翻转时(调用bar.reversal_axis()):
在这里插入图片描述

不翻转时:
但是不翻转的话,我们看到柱状图右边30,20,10,没有放在柱状图的顶部,所以我们建议翻转一下。
在这里插入图片描述

十 基础时间线柱状图绘制

"""
演示带有时间线的柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType

bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [30, 30, 20], label_opts=LabelOpts(position="right"))
bar1.reversal_axis()

bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 50, 50], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()

bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [70, 60, 60], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()

# 构建时间线对象
# theme可以修改柱的颜色
timeline = Timeline({"theme": ThemeType.LIGHT})
# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")

# 自动播放设置
timeline.add_schema(
    play_interval=1000,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=True
)

# 绘图是用时间线对象绘图,而不是bar对象了
timeline.render("基础时间线柱状图.html")

我们看到,下图实际上会根据时间线进行滚动。
在这里插入图片描述

十一 动态GDP柱状图绘制

"""
演示第三个图表:GDP动态柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType

# 1. 读取数据
f = open("C:/Users/Administrator/Desktop/Py/资料/可视化案例数据/动态柱状图数据/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()

# 2. 删除第一条数据(第一条是无用的内容year,GDP,rate标志)
data_lines.pop(0)

# 3. 将数据转换为字典存储,格式为:
# { 年份: [ [国家, gdp], [国家,gdp], ......  ], 年份: [ [国家, gdp], [国家,gdp], ......  ], ...... }
# { 1960: [ [美国, 123], [中国,321], ......  ], 1961: [ [美国, 123], [中国,321], ......  ], ...... }
# 先定义一个字典对象
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])      # 年份
    country = line.split(",")[1]        # 国家
    gdp = float(line.split(",")[2])     # gdp数据,加上float是为了将带有科学计数法(5.433E+11)的转成正常的数值
    # 如何判断字典里面有没有指定的key呢? 通过异常
    try:
        data_dict[year].append([country, gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country, gdp])
# print(data_dict[1960])

# 4. 创建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})

# 5. 排序年份
sorted_year_list = sorted(data_dict.keys())

# 6. 将每一年的数据创建成对应的bar,然后每个bar都添加到时间线.
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element: element[1], reverse=True) # 将年份里的列表按照gdp值大小进行排序
    year_data = data_dict[year][0:8] # 取出本年份前8名的国家和gdp
    x_data = []
    y_data = []
    for country_gdp in year_data:
        x_data.append(country_gdp[0])   # x轴添加国家
        y_data.append(country_gdp[1] / 100000000)   # y轴添加gdp数据

    # 构建柱状图
    bar = Bar()
    # 将x轴的国家排序翻转,以及将y轴的gdp数据翻转,是为了gdp高的放在柱状图最上面,gdp低的放在最下面
    x_data.reverse()
    y_data.reverse()
    # 添加x轴和y轴到柱状图.
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right")) # position="right"的作用是将便签放在右边
    # 反转x轴和y轴(上面是将内容翻转,这里是单纯的x轴和y轴调换)
    bar.reversal_axis()

    # 动态设置每一年的图表的标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年全球前8GDP数据")
    )
    # 添加每一年的柱状图到时间线
    timeline.add(bar, str(year))

# 7. 设置时间线自动播放
timeline.add_schema(
    play_interval=1000,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)

# 8. 绘图
timeline.render("1960-2019全球GDP前8国家.html")

结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基础----08-----json、pyecharts模块介绍以及折线图、地图、柱状图的绘制 的相关文章

  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 有条件填写 pandas 数据框

    我有一个数据框df列中包含浮点值A 我想添加另一列B这样 B 0 A 0 for i gt 0 B i if np isnan A i then A i else Step3 B i if abs B i 1 A i B i 1 lt 0
  • 如何使用基于 Spring MVC 注解的 Portlet 控制器通过 AJAX 呈现 JSON 视图/响应?

    在过去的六个小时里 我在 Google 和 stackoverflow 上搜索了这个问题的答案 我最初是一名 PHP 开发人员 所以请耐心等待 从 PHP 控制器返回 JSON 数组非常简单 我正在使用 Spring MVC 3 0 我只想
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • Python 字典 - 在 2 个字符的字符串中查找第二个字符,该字符产生最小值

    我想提交密钥的第一部分并返回该密钥的剩余部分 以最小化值 并从第一部分开始 例如 d ab 100 ac 200 ad 500 如果我要进去 a I would like to return b min d s s for s in d i
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • 在 JSON 对象中强制执行非空字段

    我们的 REST API 接收一些 JSON 对象输入 其中某些字段要求不为空 这些可以是字符串 整数 甚至可以是其他一些类实例作为参考 我们正在尝试找到一种方法来强制这些字段不为空 而不是在 API 中进行空检查的正确方法 当前的 if
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • Flask SQLAlchemy 与 MyPy - 模型类型错误

    我遇到了以下组合问题flask sqlalchemy and mypy 当我定义一个新的 ORM 对象时 例如 class Foo db Model pass where db是使用创建的数据库SQL炼金术应用于flask app mypy
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • python中匹配3个或更多相同的字符

    我正在尝试使用正则表达式在字符串中查找三个或更多相同的字符 例如 你好 不匹配 噢 会的 我尝试过做类似的事情 re compile 1 3 a zA Z re compile w 1 5 但似乎都不起作用 w 1 2 是您正在寻找的正则表

随机推荐

  • Linux文件管理

    成功不易 加倍努力 1 文件系统目录结构 1 1文件系统的目录结构 1 2 常见的文件系统目录功能 1 3 应用程序的组成部分 1 4 Linux下的文件类型 2 文件操作命令 2 1 显示当前工作目录 2 2 绝对和相对路径 2 3 更改
  • Nano编辑器安装使用指南

    关于nano Nano编辑器是一个命令行文本编辑器 具有简单易用的界面和一些基本功能 Nano小巧友好 提供许多额外的特性 例如交互式的查找和替换 定位到指定的行列 自动缩进 特性切换 国际化支持 文件名标记完成等 Nano是为了代替闭源的
  • 《Zookeeper-分布式过程系统技术详解》第一部分基础概念笔记学习

    1 Zookeep的客户端API功能强大 其中包括 保障强一致性 有序性和持久性 实现通用的同步原语的能力 在实际分布式系统中 并发往往导致不正确的行为 ZooKeeper提供了一种简单的并发处理机制 2 ZooKeeper不适用的场景 整
  • 重新学javaweb---JSTL标签

    JSTL简介 标准标签库JSTL的全名为 Java Server Pages Standard Tag Library JSTL主要提供了5大类标签库 核心标签库 为日常任务提供通用支持 如显示和设置变量 重复使用一组项目 测试条件以及其他
  • Promise常用API介绍

    Promise中的API PromiseState 实例对象中的一个属性 Promisestate 状态 pending 未决定 resolved fullfilled 成功 rejected 失败 pending 变为resolved p
  • CSDN周赛64期题解(含部分代码)

    计算之魂 主题周赛如期回归 因为差不多每次都是新题 让人多了点期待 相信非编程题无需多言 答案都在书里 翻书翻得快 满分无障碍 当然 如果提前读过此书就更好了 比如原书中把金块切了 2 刀 问题中扩展了一下 变成切 9 刀 如果提前理解过原
  • 【推荐系统】 一、推荐系统简介

    1 推荐系统的作用和意义 在这个时代 无论信息消费者还是信息生产者都面临巨大的挑战 信息消费者 在大量信息中找到自己感兴趣的信息很困难 信息生产者 将自己生产的信息让广大消费者关注很困难 推荐系统将用户与信息联系起来 1 1 用户角度 推荐
  • Mysql语句执行顺序

    1 SQL书写顺序 select distinct 显示字段 from 表名 join 要连接的表名 on 连接查询条件 where 约束条件 group by 分组字段 having 分组过滤条件 order By DESC 降序 或AS
  • NSLog效率低下的原因以及NSLog宏定义

    我是前言 打Log是我们debug时最简单朴素的方法 NSLog 对于objc开发就像 printf 对于c一样重要 但在使用 NSLog 打印大量Log 尤其是在游戏开发时 如每一帧都打印数据 NSLog 会明显的拖慢程序的运行速度 游戏
  • java实现敏感词过滤算法DFA并忽略敏感词中的特殊字符

    参考文章 https blog csdn net chenssy article details 26961957 补充说明 1 具体的DFA介绍参考原文章 此处只是补充了文章中没有介绍的点以及根据实际需求进行了改造 2 最大 小匹配规则
  • Flask学习笔记_BBS论坛搭建(三)

    Flask学习笔记 BBS论坛搭建 三 1 cms管理 1 1 项目模块划分 目录结构搭建 1 2 每个模块注册蓝图 并绑定 1 3 数据库配置 连接 迁移控制 这里本来用了flask script 但migrate的新版不支持他了 所以就
  • CSDN竞赛第41期题解

    CSDN竞赛第41期题解 非编程题部分 第一题 算盘是一种古代中国发明的计算机 原因在于人们在操作算盘时可以充分利用人脑的计算能力 错的 第二题 以下选项中 哪一项不属于计算机的本质特征 C 受电力驱动 电力不是本质特征 第三题 布莱兹 帕
  • ElasticSearch学习:文档的基本操作

    上一个我们基本是围绕索引操作 里面的指定类型 或者文档里面的一些属性 这里是主要关注文档操作 毕竟主要常见的操作就是围绕文档内容来进行的 毕竟主要是做搜索 首先先导入一些数据进去 一 简单的查询操作 put testdoc user 1 n
  • 机器学习 -Statsmodels

    机器学习记录 Statsmodels 用于探索数据 估计模型 并运行统计检验 conda install y statsmodels 线性回归 import numpy as np import pandas as pd import ma
  • Linux·网络编程套接字(三)

    目录 简单的TCP英译汉服务器 简单回顾 更改handler方法 地址转换函数 字符串IP转整数IP 整数IP转字符串IP 绑定失败问题 TCP协议通讯流程 通讯流程总览 三次握手的过程 数据传输的过程 编辑 四次挥手的过程 TCP和UDP
  • 人不成熟的五大特征-读后感

    原文地址 人不成熟的五大特征 百度经验 1 立即要回报 1 所有简单的快的 别人也能做 这并不能使你超过别人 2 做出别人做不出来的复杂成果 需要较长的时间和持续的学习 得到就得付出 时间 资源 金钱 3 尽量宏观 全局 眼光放长远 考虑全
  • 11系统越狱无法连接服务器,Electra发布iOS 11.2-11.3.1“不完美”越狱工具(附教程)...

    7月8日消息 据相关媒体报道 iOS越狱团队Electra日前发布了适用于所有iPhone iPod touch iPad用户的iOS 11 2 11 3 1 不完美 越狱工具 不过 由于此次越狱依旧是 不完美 状态 因此设备关机或重启后启
  • 通过Vitis Ai 3.0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解!

    通过Vitis Ai 3 0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解 这些天再通过Vitis Ai 3 0平台来量化yolov5模型的并且部署到zcu102板子上的时候一直遇到检测结果比较离谱的问题 因此想要发个贴请教
  • FastDFS 学习笔记

    一 理论基础 FastDFS比较适合以中小文件为载体的在线服务 比如跟Nginx Apache 配合搭建图片服务器 分布式文件系统FastDFS FastDFS是纯C语言实现 只支持Linux FreeBSD等UNIX系统 FastDFS的
  • python基础----08-----json、pyecharts模块介绍以及折线图、地图、柱状图的绘制

    一 python变量和json数据的相互转化 json就是 一种在各个编程语言中流通的数据格式 负责不同编程语言中的数据传递和交互 类似于 国际通用语言 英语 import json if name main 1 将python变量转成js