头部首发优志愿头部u_sign生成与TLS指纹处理! + 数据可视化技术讲解【Python爬虫】

目录

针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取

找对应得数据包

请求发现数据有加密

发现加密参数

搜索加密参数,好进行分析

分析过程

数据可视化


在这里插入图片描述

针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取

首先进行鼠标右键,进行数据抓包

在这里插入图片描述

找对应得数据包

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

请求发现数据有加密

## 1.引入库 代码如下(示例):

发现加密参数

在这里插入图片描述

搜索加密参数,好进行分析

在这里插入图片描述

分析过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
In [2]:

!pip install jsonpath

Collecting jsonpath
  Downloading jsonpath-0.82.2.tar.gz (10 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: jsonpath
  Building wheel for jsonpath (setup.py) ... done
  Created wheel for jsonpath: filename=jsonpath-0.82.2-py3-none-any.whl size=6724 sha256=3db960d7ff6f0bb132346f0e72e00349a7f6156100fc98c35ffda5cee786b2bf
  Stored in directory: /home/mw/.cache/pip/wheels/2c/2a/fa/87e26ec807b9a21dd0464eb1319cc3ad51b0c9e505fe6b7396
Successfully built jsonpath
Installing collected packages: jsonpath
Successfully installed jsonpath-0.82.2
import requests
import json
import hashlib
import jsonpath
import pandas as pd
for i in range(1, 2):
    data = '{"keyword":"","provincenames":[],"naturetypes":[],"edulevel":"","categories":[],"features":[],"pageindex":%s,"pagesize":20,"sort":11}&9sasji5owng41irkisvtjhlxhmrysrp1' % i
    md5 = hashlib.md5(data.encode())
    # md5.update(content.encode('utf-8'))
    sign = md5.hexdigest()
    print(sign)
    headers = {
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        "Connection": "keep-alive",
        "Content-Type": "application/json",
        "Origin": "https://pv4y-pc.youzy.cn",
        "Referer": "https://pv4y-pc.youzy.cn/",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-site",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "u-sign": sign,
        "u-token": ""
    }
    url = "https://uwf7de983aad7a717eb.youzy.cn/youzy.dms.basiclib.api.college.query"
    data = {"keyword":"","provinceNames":[],"natureTypes":[],"eduLevel":"","categories":[],"features":[],"pageIndex":i,"pageSize":20,"sort":11}
    data = json.dumps(data, separators=(',', ':'))
    response = requests.post(url, headers=headers, data=data).json()
    # print(resps)
    # 学校名称
    data_name = jsonpath.jsonpath(response, '$..cnName')
    print(data_name)
    # 学校类型
    data_shape = jsonpath.jsonpath(response, '$..categories')
    # 综合指数
    data_comScore = jsonpath.jsonpath(response, '$..comScore')
    # 是不是本科
    data_eduLevel = jsonpath.jsonpath(response, '$..eduLevel')
    # 学校情况
    data_features = jsonpath.jsonpath(response, '$..features')
    # 排名
    data_ranking = jsonpath.jsonpath(response, '$..ranking')
    # 热度
    data_hits = jsonpath.jsonpath(response, '$..hits')
    # 部门
    data_belong = jsonpath.jsonpath(response, '$..belong')
    data = {'学校名称': data_name, '学校类型': data_shape, '综合指数': data_comScore, '学历': data_eduLevel,
            '学校情况':  data_features, '排名': data_ranking, '热度': data_hits,
            '部门': data_belong}
    df = pd.DataFrame(pd.DataFrame.from_dict(data, orient='index').values.T, columns=list(data.keys()))
    print(df)
    # df.to_csv("中国院校统计.csv",index=False)
643ff9499febb3ee34c95ffe0bb29cb0
['清华大学', '北京大学', '北京大学医学部', '中国科学院大学', '复旦大学', '复旦大学上海医学院', '上海交通大学', '上海交通大学医学院', '中国科学技术大学', '中国人民大学', '中国人民大学(苏州校区)', '浙江大学', '浙江大学医学院', '南京大学', '北京航空航天大学', '北京航空航天大学中法航空学院', '武汉大学', '同济大学', '南开大学', '中国人民解放军国防科技大学']
              学校名称  学校类型   综合指数   学历                      学校情况  排名       热度  \
0             清华大学  [综合]  93.59  ben  [985, 211, 国重点, 保研, 双一流]   1  1378946   
1             北京大学  [综合]  92.13  ben  [985, 211, 国重点, 保研, 双一流]   2  2155577   
2          北京大学医学部  [医药]  92.13  ben  [985, 211, 国重点, 保研, 双一流]   2   439830   
3          中国科学院大学  [综合]  79.95  ben            [国重点, 保研, 双一流]   3   474549   
4             复旦大学  [综合]  83.73  ben  [985, 211, 国重点, 保研, 双一流]   4  1091717   
5        复旦大学上海医学院  [医药]  83.73  ben  [985, 211, 国重点, 保研, 双一流]   4   321950   
6           上海交通大学  [综合]  84.72  ben  [985, 211, 国重点, 保研, 双一流]   5   934308   
7        上海交通大学医学院  [医药]  84.72  ben  [985, 211, 国重点, 保研, 双一流]   5   306197   
8         中国科学技术大学  [综合]  79.59  ben  [985, 211, 国重点, 保研, 双一流]   6   540224   
9           中国人民大学  [综合]  79.92  ben  [985, 211, 保研, 国重点, 双一流]   7   895950   
10    中国人民大学(苏州校区)  [综合]  79.92  ben       [985, 211, 保研, 双一流]   7   448989   
11            浙江大学  [综合]  86.16  ben  [985, 211, 国重点, 保研, 双一流]   8  1102871   
12         浙江大学医学院  [医药]  86.16  ben      [985, 211, 国重点, 双一流]   8   298237   
13            南京大学  [综合]  80.51  ben  [985, 211, 国重点, 保研, 双一流]   9  1068208   
14        北京航空航天大学  [理工]  77.19  ben       [985, 211, 保研, 双一流]  10   668746   
15  北京航空航天大学中法航空学院    []  77.19  ben                        []  10    11630   
16            武汉大学  [综合]  79.82  ben  [985, 211, 国重点, 保研, 双一流]  11  1167221   
17            同济大学  [综合]  77.02  ben  [985, 211, 国重点, 保研, 双一流]  12   694969   
18            南开大学  [综合]  76.11  ben  [985, 211, 国重点, 保研, 双一流]  13   725994   
19   中国人民解放军国防科技大学  [军事]  73.59  ben      [985, 211, 国重点, 双一流]  14   717849   

              部门  
0            教育部  
1            教育部  
2            教育部  
3            中科院  
4            教育部  
5            教育部  
6            教育部  
7            教育部  
8            中科院  
9            教育部  
10           教育部  
11           教育部  
12          浙江大学  
13           教育部  
14           工信部  
15                
16           教育部  
17           教育部  
18           教育部  
19  中国共产党中央军事委员会  

数据可视化

In [29]:

import pandas as pd
data=pd.read_csv("/home/mw/input/yuanxiao7383/中国院校统计.csv")
data

Out[29]:

学校名称学校类型综合指数学历学校情况排名热度部门
0清华大学['综合']93.59ben['985', '211', '国重点', '保研', '双一流']11377703教育部
1北京大学['综合']92.13ben['985', '211', '国重点', '保研', '双一流']22155049教育部
2北京大学医学部['医药']92.13ben['985', '211', '国重点', '保研', '双一流']2439644教育部
3中国科学院大学['综合']79.95ben['国重点', '保研', '双一流']3474239中科院
4复旦大学['综合']83.73ben['985', '211', '国重点', '保研', '双一流']41091254教育部
5复旦大学上海医学院['医药']83.73ben['985', '211', '国重点', '保研', '双一流']4321828教育部
6上海交通大学['综合']84.72ben['985', '211', '国重点', '保研', '双一流']5933901教育部
7上海交通大学医学院['医药']84.72ben['985', '211', '国重点', '保研', '双一流']5306102教育部
8中国科学技术大学['综合']79.59ben['985', '211', '国重点', '保研', '双一流']6539918中科院
9中国人民大学['综合']79.92ben['985', '211', '保研', '国重点', '双一流']7895604教育部
10中国人民大学(苏州校区)['综合']79.92ben['985', '211', '保研', '双一流']7448698教育部
11浙江大学['综合']86.16ben['985', '211', '国重点', '保研', '双一流']81102369教育部
12浙江大学医学院['医药']86.16ben['985', '211', '国重点', '双一流']8298159浙江大学
13南京大学['综合']80.51ben['985', '211', '国重点', '保研', '双一流']91067571教育部
14北京航空航天大学['理工']77.19ben['985', '211', '保研', '双一流']10668359工信部
15北京航空航天大学中法航空学院[]77.19ben[]1011509NaN
16武汉大学['综合']79.82ben['985', '211', '国重点', '保研', '双一流']111166705教育部
17同济大学['综合']77.02ben['985', '211', '国重点', '保研', '双一流']12694605教育部
18南开大学['综合']76.11ben['985', '211', '国重点', '保研', '双一流']13725646教育部
19中国人民解放军国防科技大学['军事']73.59ben['985', '211', '国重点', '双一流']14717346中国共产党中央军事委员会
20北京理工大学['理工']74.96ben['985', '211', '保研', '双一流']15669865工信部
21北京师范大学['师范']76.59ben['985', '211', '保研', '国重点', '双一流']16698563教育部
22北京师范大学(珠海校区)['综合']76.59ben['985', '211', '国重点', '保研', '双一流']16282745教育部
23哈尔滨工业大学['理工']76.45ben['985', '211', '国重点', '保研', '双一流']17724788工信部
24哈尔滨工业大学(威海)['理工']76.45ben['985', '211', '国重点', '保研', '双一流']17506924工信部
25哈尔滨工业大学(深圳)['理工']76.45ben['985', '211', '国重点', '保研', '双一流']17253199工信部
26西安交通大学['综合']77.40ben['985', '211', '国重点', '保研', '双一流']18879613教育部
27东南大学['综合']76.03ben['985', '211', '国重点', '保研', '双一流']19776147教育部
28东南大学医学院['医药']76.03ben['985', '211', '国重点', '保研', '双一流']19161457教育部
29华中科技大学['综合']77.98ben['985', '211', '国重点', '保研', '双一流']201055994教育部
...........................
1570阜阳职业技术学院['理工']0.00zhuan[]027130省政府
1571湖南信息职业技术学院['理工']0.00zhuan['省重点']032456省政府
1572秦皇岛职业技术学院['理工']0.00zhuan[]090203省政府
1573浙江纺织服装职业技术学院['理工']0.00zhuan['省属']024877省政府
1574广东农工商职业技术学院['综合']0.00zhuan['省属']030821省政府
1575江西旅游商贸职业学院['财经']0.00zhuan['省重点']026661省政府
1576唐山职业技术学院['综合']0.00zhuan['省属']041608省政府
1577沈阳航空职业技术学院['理工']0.00zhuan['省重点']027589省政府
1578七台河职业学院['综合']0.00zhuan['省属']019431省政府
1579甘肃有色冶金职业技术学院['理工']0.00zhuan['省属']019093省政府
1580宁夏职业技术学院['综合']0.00zhuan['省属']027452自治区政府
1581内蒙古警察职业学院['政法']0.00zhuan['省属']026005自治区政府
1582天津海运职业学院['综合']0.00zhuan['省重点']047443市政府
1583广东工贸职业技术学院['理工']0.00zhuan['省属']033165省政府
1584湘潭医卫职业技术学院['医药']0.00zhuan['省属']033889省政府
1585黑龙江建筑职业技术学院['理工']0.00zhuan['省属']032713省政府
1586温州职业技术学院['综合']0.00zhuan[]037202省政府
1587浙江东方职业技术学院['综合']0.00zhuan[]025348省教育厅
1588辽宁建筑职业学院['理工']0.00zhuan['省属']034613省政府
1589邢台医学高等专科学校['医药']0.00zhuan[]056330省政府
1590铁岭师范高等专科学校['师范']0.00zhuan['省属']032921省政府
1591广西水利电力职业技术学院['理工']0.00zhuan[]025498自治区政府
1592武汉外语外事职业学院['综合']0.00zhuan[]024622省教育厅
1593福建信息职业技术学院['理工']0.00zhuan['省属']024146省政府
1594平顶山工业职业技术学院['理工']0.00zhuan['省属']027876省政府
1595广东省外语艺术职业学院['艺术']0.00zhuan['省属']039208省政府
1596长沙航空职业技术学院['理工']0.00zhuan['省重点']0112407空军装备部
1597桂林师范高等专科学校['师范']0.00zhuan[]026748自治区政府
1598山东商务职业学院['综合']0.00zhuan['省属']043707省政府
1599延边职业技术学院['理工']0.00zhuan[]023005省政府

In [30]:

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1600 entries, 0 to 1599
Data columns (total 8 columns):
学校名称    1600 non-null object
学校类型    1600 non-null object
综合指数    1600 non-null float64
学历      1600 non-null object
学校情况    1600 non-null object
排名      1600 non-null int64
热度      1600 non-null int64
部门      1588 non-null object
dtypes: float64(1), int64(2), object(5)
memory usage: 100.1+ KB

In [31]:

import jieba
# jieba.load_userdict('addwords.txt')
title_cut = []
for i in data.学校情况:
    j = jieba.lcut(i)
    title_cut.append(j)
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 0.971 seconds.
Prefix dict has been built succesfully.

In [32]:

cut_words = jieba.lcut(str(data['学校情况'].values), cut_all = False)

In [33]:

file_path = open(r'/home/mw/input/data8378/stopwords.txt',encoding='utf-8')
stop_words = file_path.read()

In [34]:

# 新建一个空列表,用于存储删除停用词后的数据
new_data = []
for word in cut_words:
    if word not in stop_words:
        new_data.append(word)
print(new_data)
['[', '"', '[', "'", '985', "'", "'", '211', "'", "'", '国', '重点', "'", "'", '保研', "'", "'", '双', '一流', "'", ']', '"', '"', '[', "'", '985', "'", "'", '211', "'", "'", '国', '重点', "'", "'", '保研', "'", "'", '双', '一流', "'", ']', '"', '"', '[', "'", '985', "'", "'", '211', "'", "'", '国', '重点', "'", "'", '保研', "'", "'", '双', '一流', "'", ']', '"', '...', "'", '[', ']', "'", '"', '[', "'", '省属', "'", ']', '"', "'", '[', ']', "'", ']']

In [35]:

from nltk import FreqDist
freq_list = FreqDist(new_data)
# 返回词语列表
most_common_words = freq_list.most_common()
print(most_common_words)
[("'", 36), ('"', 8), ('[', 7), (']', 7), ('985', 3), ('211', 3), ('国', 3), ('重点', 3), ('保研', 3), ('双', 3), ('一流', 3), ('...', 1), ('省属', 1)]

In [36]:

from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
def wordcloud_base() -> WordCloud:
    c = (
        WordCloud()
        .add("", most_common_words, word_size_range=[20, 100])
        .set_global_opts(title_opts=opts.TitleOpts(title="美团标题标签可视化"))
    )
    return c

wd = wordcloud_base()
wd.render_notebook()

Out[36]:

In [25]:

import numpy as np 
data["综合指数"] = data["综合指数"].astype(np.int64)
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1600 entries, 0 to 1599
Data columns (total 8 columns):
学校名称    1600 non-null object
学校类型    1600 non-null object
综合指数    1600 non-null int64
学历      1600 non-null object
学校情况    1600 non-null object
排名      1600 non-null int64
热度      1600 non-null int64
部门      1588 non-null object
dtypes: int64(3), object(5)
memory usage: 100.1+ KB

In [26]:

data['学校类型']=data['学校类型'].apply(lambda x: x.replace('[', '').replace(']', ''))
data['学校类型']

Out[26]:

0       '综合'
1       '综合'
2       '医药'
3       '综合'
4       '综合'
5       '医药'
6       '综合'
7       '医药'
8       '综合'
9       '综合'
10      '综合'
11      '综合'
12      '医药'
13      '综合'
14      '理工'
15          
16      '综合'
17      '综合'
18      '综合'
19      '军事'
20      '理工'
21      '师范'
22      '综合'
23      '理工'
24      '理工'
25      '理工'
26      '综合'
27      '综合'
28      '医药'
29      '综合'
        ... 
1570    '理工'
1571    '理工'
1572    '理工'
1573    '理工'
1574    '综合'
1575    '财经'
1576    '综合'
1577    '理工'
1578    '综合'
1579    '理工'
1580    '综合'
1581    '政法'
1582    '综合'
1583    '理工'
1584    '医药'
1585    '理工'
1586    '综合'
1587    '综合'
1588    '理工'
1589    '医药'
1590    '师范'
1591    '理工'
1592    '综合'
1593    '理工'
1594    '理工'
1595    '艺术'
1596    '理工'
1597    '师范'
1598    '综合'
1599    '理工'
Name: 学校类型, Length: 1600, dtype: object

In [27]:

# 查看缺失值
data.isnull().any()

Out[27]:

学校名称    False
学校类型    False
综合指数    False
学历      False
学校情况    False
排名      False
热度      False
部门       True
dtype: bool

In [28]:

# 查看数据结构
data.describe()

Out[28]:

综合指数排名热度
count1600.0000001600.0000001.600000e+03
mean47.107500477.6768751.650321e+05
std25.032106406.0796761.851948e+05
min0.0000000.0000002.730000e+03
25%55.00000043.7500005.205350e+04
50%57.000000435.5000009.286500e+04
75%60.000000835.2500002.108105e+05
max93.0000001235.0000002.155049e+06

In [10]:

data2 = data.groupby('学校名称')['综合指数'].agg(['mean', 'median'])
data2

Out[10]:

meanmedian
学校名称
七台河职业学院00
三亚中瑞酒店管理职业学院00
三亚学院5555
三峡大学6262
三峡大学科技学院5757
三明学院5858
三江学院5656
三门峡社会管理职业学院00
三门峡职业技术学院00
上海中侨职业技术大学5555
上海中医药大学6565
上海交通大学8484
上海交通大学医学院8484
上海体育大学6464
上海健康医学院5959
上海公安学院00
上海兴伟学院5656
上海商学院6060
上海外国语大学6868
上海外国语大学贤达经济人文学院5555
上海大学7171
上海对外经贸大学6565
上海工程技术大学6161
上海师范大学6565
上海师范大学天华学院5656
上海应用技术大学6161
上海建桥学院5555
上海思博职业技术学院00
上海戏剧学院6565
上海政法学院6464
.........
黄冈师范学院5959
黄冈职业技术学院00
黄山学院5959
黄河交通学院5757
黄河科技学院5656
黄淮学院5757
黎明职业大学00
黑河学院5656
黑龙江东方学院5555
黑龙江中医药大学6060
黑龙江八一农垦大学5858
黑龙江外国语学院5555
黑龙江大学6262
黑龙江工业学院5757
黑龙江工商学院5555
黑龙江工程学院5858
黑龙江工程学院昆仑旅游学院5555
黑龙江建筑职业技术学院00
黑龙江科技大学5959
黑龙江财经学院5555
黔南民族师范学院5757
齐鲁医药学院5757
齐鲁工业大学6060
齐鲁师范学院5959
齐鲁理工学院5555
齐齐哈尔医学院5858
齐齐哈尔大学5858
齐齐哈尔工程学院5454
齐齐哈尔高等师范专科学校00
龙岩学院5858

1600 rows × 2 columns

In [11]:

data_brand=data2.sort_values(by='median', ascending=True).tail(10)
data_brand

Out[11]:

meanmedian
学校名称
南京大学8080
复旦大学上海医学院8383
复旦大学8383
上海交通大学8484
上海交通大学医学院8484
浙江大学8686
浙江大学医学院8686
北京大学医学部9292
北京大学9292
清华大学9393

In [12]:

from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (Bar()
       .add_xaxis(list(data_brand.index))
       .add_yaxis('',[int(i) for i in(round(data_brand['median']))])
        .set_global_opts(title_opts=opts.TitleOpts(title="中国大学综合指数概况", subtitle="中位数"),xaxis_opts=opts.AxisOpts(name_rotate=0,name="综合指数",axislabel_opts={"rotate":60}))

        )
bar.render_notebook()

Out[12]:

In [13]:

data3 = data.groupby('学校名称')['热度'].agg(['mean', 'median'])
data3

Out[13]:

meanmedian
学校名称
七台河职业学院1943119431
三亚中瑞酒店管理职业学院2175521755
三亚学院104658104658
三峡大学501787501787
三峡大学科技学院8998589985
三明学院9871298712
三江学院101231101231
三门峡社会管理职业学院2069220692
三门峡职业技术学院3756137561
上海中侨职业技术大学5780257802
上海中医药大学214334214334
上海交通大学933901933901
上海交通大学医学院306102306102
上海体育大学7623376233
上海健康医学院115812115812
上海公安学院106291106291
上海兴伟学院3353233532
上海商学院155186155186
上海外国语大学302454302454
上海外国语大学贤达经济人文学院9233192331
上海大学607608607608
上海对外经贸大学243112243112
上海工程技术大学224267224267
上海师范大学407476407476
上海师范大学天华学院7667476674
上海应用技术大学291811291811
上海建桥学院188996188996
上海思博职业技术学院3344733447
上海戏剧学院116150116150
上海政法学院219194219194
.........
黄冈师范学院104892104892
黄冈职业技术学院4299742997
黄山学院6055060550
黄河交通学院6036760367
黄河科技学院9614696146
黄淮学院152150152150
黎明职业大学3218632186
黑河学院6955569555
黑龙江东方学院5041750417
黑龙江中医药大学169616169616
黑龙江八一农垦大学125798125798
黑龙江外国语学院4922949229
黑龙江大学344645344645
黑龙江工业学院121327121327
黑龙江工商学院4207142071
黑龙江工程学院117734117734
黑龙江工程学院昆仑旅游学院3410434104
黑龙江建筑职业技术学院3271332713
黑龙江科技大学238421238421
黑龙江财经学院5588155881
黔南民族师范学院5521455214
齐鲁医药学院121623121623
齐鲁工业大学329048329048
齐鲁师范学院134712134712
齐鲁理工学院9949399493
齐齐哈尔医学院120487120487
齐齐哈尔大学164782164782
齐齐哈尔工程学院4797147971
齐齐哈尔高等师范专科学校2889728897
龙岩学院8067780677

In [14]:

data_line=data3.sort_values(by='median', ascending=True).tail(10)
data_line

Out[14]:

meanmedian
学校名称
四川大学10188811018881
苏州大学10540401054040
华中科技大学10559941055994
南京大学10675711067571
复旦大学10912541091254
浙江大学11023691102369
吉林大学11139041113904
武汉大学11667051166705
清华大学13777031377703
北京大学21550492155049

In [15]:

from pyecharts.charts import Line
line = (Line()
       .add_xaxis(list(data_line.index))
       .add_yaxis('',[int(i) for i in(round(data_line['mean']))])
        .set_global_opts(title_opts=opts.TitleOpts(title="中国大学热度概况top10", subtitle="平均"),xaxis_opts=opts.AxisOpts(name_rotate=0,name="热度",axislabel_opts={"rotate":60}))

        )
line.render_notebook()

Out[15]:

In [16]:

data["部门"].unique()

Out[16]:

array(['教育部', '中科院', '浙江大学', '工信部', nan, '中国共产党中央军事委员会', '公安部', '社科院',
       '中国人民解放军海军', '市政府', '省政府', '国民委', '中国人民解放军陆军', '国卫委', '统战部',
       '中国人民解放军空军', '交通运输部', '国体局', '省教育厅', '自治区政府', '海关总署',
       '交通运输部(中国民用航空局)', '新疆生产建设兵团', '中华妇女联合会', '中华全国总工会', '市教委',
       '河南省体育局', '应管部', '地震局', '自治区教育厅', '香港特别行政区教育局', '澳门特别行政区政府',
       '中华人民共和国澳门特别行政区高等教育局', '中国人民解放军火箭军', '香港特别行政区政府教育局', '香港特别行政区政府',
       '上海市 中国科学院', '中国人民武装警察部队总部', '国家军委', '外交部', '解放军战略支援部队航天系统部',
       '中国人民解放军战略支援部队', '共青团', '中国澳门特区政府', '中央办公厅', '司法部', '中国人民武装警察部队',
       '中国人民武装警察部队政治部', '解放军成都军区', '中央军委联合参谋部', '中国人民解放军空军总部',
       '中国共产党中央军事委员会政治工作部', '解放军兰州军区', '香港特别行政区政府高等教育署', '中国人民解放军',
       '解放军总参谋部', '澳门特别行政区社会文化司', '空军装备部'], dtype=object)

In [17]:

from collections import Counter
# 使用 Counter 统计元素出现次数
counts = Counter(data["部门"])

# 使用 sorted() 函数对出现次数进行降序排序
sorted_counts = sorted(counts.items(), key=lambda x: x[1], reverse=True)

# 打印结果
for element, count in sorted_counts:
    print(element, count)
省政府 780
省教育厅 386
教育部 95
市政府 89
自治区政府 80
市教委 38
自治区教育厅 21
nan 12
工信部 9
中国人民解放军陆军 8
香港特别行政区教育局 7
国民委 6
公安部 5
中国人民解放军空军 5
中国人民解放军海军 4
新疆生产建设兵团 3
中国人民武装警察部队 3
解放军总参谋部 3
中科院 2
统战部 2
交通运输部(中国民用航空局) 2
应管部 2
香港特别行政区政府 2
中国人民武装警察部队总部 2
浙江大学 1
中国共产党中央军事委员会 1
社科院 1
国卫委 1
交通运输部 1
国体局 1
海关总署 1
中华妇女联合会 1
中华全国总工会 1
河南省体育局 1
地震局 1
澳门特别行政区政府 1
中华人民共和国澳门特别行政区高等教育局 1
中国人民解放军火箭军 1
香港特别行政区政府教育局 1
上海市 中国科学院 1
国家军委 1
外交部 1
解放军战略支援部队航天系统部 1
中国人民解放军战略支援部队 1
共青团 1
中国澳门特区政府 1
中央办公厅 1
司法部 1
中国人民武装警察部队政治部 1
解放军成都军区 1
中央军委联合参谋部 1
中国人民解放军空军总部 1
中国共产党中央军事委员会政治工作部 1
解放军兰州军区 1
香港特别行政区政府高等教育署 1
中国人民解放军 1
澳门特别行政区社会文化司 1
空军装备部 1

In [19]:

from pyecharts import options as opts
from pyecharts.charts import Radar
# 数据
data = [
    {"value": [780, 386, 95, 89, 80, 38], "name": "实际值"},
    {"value": [1000, 1000, 1000, 1000, 1000, 1000], "name": "目标值"}
]

# 指示器名称
indicator = [
    {"name": "省政府", "max": 1000},
    {"name": "省教育厅", "max": 1000},
    {"name": "教育部", "max": 1000},
    {"name": "自治区政府", "max": 1000},
    {"name": "市教委", "max": 1000},
    {"name": "自治区教育厅", "max": 1000},
]

# 绘图
radar = (
    Radar()
    .set_global_opts(title_opts=opts.TitleOpts(title="中国院校部门雷达图"))
    .add_schema(schema=indicator)
    .add("数据", data, label_opts=opts.LabelOpts(is_show=False))
)

# 展示
radar.render_notebook()

Out[19]:

  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中使用MQTT协议进行通信可以使用paho-mqtt库,同时也支持TLS/SSL加密。下面是一个简单的示例程序: ```python import ssl import paho.mqtt.client as mqtt # MQTT连接信息 mqtt_broker = "broker.example.com" mqtt_port = 8883 mqtt_username = "username" mqtt_password = "password" # TLS/SSL证书信息 ca_cert = "/path/to/ca.crt" client_cert = "/path/to/client.crt" client_key = "/path/to/client.key" def on_connect(client, userdata, flags, rc): print("Connected with result code " + str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) client = mqtt.Client() client.tls_set(ca_cert, certfile=client_cert, keyfile=client_key, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2) client.username_pw_set(mqtt_username, mqtt_password) client.on_connect = on_connect client.on_message = on_message client.connect(mqtt_broker, mqtt_port, 60) client.loop_forever() ``` 在此示例中,我们导入了`ssl`和`paho.mqtt.client`库,然后设置MQTT连接信息和TLS/SSL证书信息。在`on_connect`和`on_message`函数中,我们定义了当连接成功和收到消息时的行为。最后,我们创建了一个MQTT客户端对象,设置TLS/SSL证书,连接到MQTT代理,并开始循环以处理所有MQTT事件。 如果您没有TLS/SSL证书,可以使用以下代码禁用TLS/SSL加密: ```python import paho.mqtt.client as mqtt # MQTT连接信息 mqtt_broker = "broker.example.com" mqtt_port = 1883 mqtt_username = "username" mqtt_password = "password" def on_connect(client, userdata, flags, rc): print("Connected with result code " + str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) client = mqtt.Client() client.username_pw_set(mqtt_username, mqtt_password) client.on_connect = on_connect client.on_message = on_message client.connect(mqtt_broker, mqtt_port, 60) client.loop_forever() ``` 在此示例中,我们将MQTT端口设置为1883,并禁用了TLS/SSL加密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值