1. 获取数据
1.1 发起请求
首先确定采集的数据网址url,通过查看国家级非物质文化遗产代表性项目名录的网页发现,点击下一页,网页网址没有变化,可以确定数据是动态数据。需要在xhr或者js寻找。
在xhr中可以找到网页数据,所以可以根据这个地方确定爬取的url是: https://www.ihchina.cn/Article/Index/getProject.html?province=&rx\_time=&type=&cate=&keywords=&category\_id=16&limit=10&p=1, 其中limit=10是页最大显示数,p=1代表第一页,所以翻页和最大显示数可以确定https://www.ihchina.cn/Article/Index/getProject.html?province=&rx\_time=&type=&cate=&keywords=&category\_id=16&limit=100&p={a}, a表示定义翻页数,可以通过循环获取不同页码,利用request。Get()方法,像这个网址发起请求,获取数据。
1.2 获取地址
根据1.1内容,依样画葫芦可以发现,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面,可以通过for循环获取到。而中国入选联合国教科文组织非物质文化遗产名录(名册)项目和国家级文化生态保护区数据少,而且数据可以在页面上获取,不用构建翻页,直接选择原网址即可。
1.3 分析页面
通过1.1可以知道,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面的数据需要xhr查看到,如下图
可以发现其数据是以字典和列表为主,是一个典型的json数据特征。而国家级文化生态保护区和联合国教科文组织项目可以在页面上定位到数据,数据在网页标签内,故可以选择使用beautifulsoup或者lxml的etree解析数据,通过节点数爬取标签数据,如下图
1.4 数据提取
综合前面的内容可以知道,国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录这两个页面的数据经过get()方法请求获取响应数据后,选择将数据直接转换成json数据,通过字典键值对和循环列表数据提取里面的字段信息,包括内容如下图:
而中国入选联合国教科文组织非物质文化遗产名录(名册)项目和国家级文化生态保护区这两个页面数据,通过get方法获取响应信息后,利用etree解析网页数据,并通过定位标签,提取所包含的所有节点信息,提取出里面的字段如下图:
1.5 数据存储
国家级非物质文化遗产代表性项目代表性传承人、国家级非物质文化遗产代表性项目名录数据、国家级文化生态保护区三个页面提取成功后,通过openpyxl库,创建一个工作簿,通过指定单元格的形式来写入数据,最后保存为excel文档。
而中国入选联合国教科文组织非物质文化遗产名录(名册)项目,通过采集下来的数据转换成dataframe数据结构,通过to_excel方法,将数据结构里的数据存为excel文档。
数据转换
对数据进行转换就是对数据的合并、清理和整合。通过转换,可以实现不同的源数据在语义上的一致性。本研究数据转换更多应用是数据类型的转换和整合。主要将表格数据读取转换成dataframe,再通过可视化之前,再由dataframe结构转换成list或者元组等数据类型,方便可视化进行。
数据清洗
数据清洗,顾名思义就是将要用到的数据中重复、多余部分的数据进行筛选并清除;把缺失部分补充完整,并将不正确的数据纠正或者删除。最后整理成可以进一步加工、使用的数据。从上面数据清洗的概念就可以大概知道数据清洗是在清洗什么了,洗掉的就是数据集中的“脏”数据。脏数据,即数据集中残缺、错误、重复的数据。数据清洗,旨在提高数据的质量、缩小数据统计过程中的误差值。本研究中,通过替换法,直接替换那些缺失值,使用replace()方法,将空值填补成无或者0,方便后面数据分析。
数据集成
数据集成包括数据抽取、转换、加载。抽取是将数据从已有的数据源中提取出来。
转换是对原始数据进行处理,变成目标数据格式的过程。加载是将转换的结果写入目的地。本研究通过if条件语句,将国家级非物质文化遗产代表性项目名录中地点抽取处理,存为dataframe结构数据,方便后期统计和可视化。
数据规约
数据归约是指在对挖掘任务和数据本身内容理解的基础上、寻找依赖于发现目标的数据的有用特征,以缩减数据规模,从而在尽可能保持数据原貌的前提下,最大限度地精简数据量。数据归约主要有两个途径:属性选择和数据采样,分别针对原始数据集中的属性和记录。本研究通过属性选择进行数据规约,如在国家级非物质文化遗产代表性项目名录数据中选择类别和申报地区进行分析。
2 数据可视化
2.1 分布地可视化
分布地可视化选择用饼状图,呈现各个地区入选项目数量的分布情况,清晰直观看出哪个地区占比最大,入选最多。通过导入数据,生成dataframe结构利用groupby函数将地区分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成饼图输出,如下图
2.2 类别可视化
类别可视化选择用柱状图,呈现不同类别入选的数量分布,可以直观知道哪个类别入选最多,哪个类别最少。通过导入数据,生成dataframe结构利用groupby函数将类别分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成柱形图输出,如下图
2.3 类别时间可视化
类别时间可视化通过分析非遗数据传承人不同类别随时间变化的趋势,本研究通过多重折线图,将不同类别数量随时间变化体现出来。可以直观知道哪个类别在什么时间最多,在什么时间最少。通过导入数据,生成dataframe结构利用筛选时间的方式将时间单独统计以及使用groupby函数分组统计类别,转化成列表形式,最后使用pyechart可视化库,将数据渲染成多重折线图输出,如下图
2.4 人数时间可视化
人数时间走势可视化通过分析非遗数据传承人不同时间人数变化趋势,可以直观知道不同时间段,非遗项目人数变化趋势。直观知道哪个时间在项目最多,在什么时间最少。通过导入数据,生成dataframe结构利用groupby函数将时间分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成折线图输出,如下图
非物质文化遗产生态保护区目录
保护区目录分布通过复合柱状图形式呈现不同地区县级和国家级项目数量,直观了解哪个地区项目最多,哪个地区项目最少。通过导入数据,生成dataframe结构利用groupby函数将地区分组统计,转化成列表形式,最后使用pyechart可视化库,将数据渲染成复合柱形图输出,如下图
名录可视化
名录可视化呈现的是中国入选联合国教科文组织非物质文化遗产名录,通过词云图的形式将项目呈现在图上面。通过导入数据,提取所有项目转换成列表,通过for循环统计各个项目出现次数,生成一个含有项目和个数的元组的列表,最后使用pyechart可视化库,将数据渲染成词云图输出,如下图