爬取中国非物质文化遗产网,了解全国布局

2020-04-27  本文已影响0人  LIGHTING_4348

非遗介绍:

非物质文化遗产是各族人民世代相承的、与群众生产生活密切相关的各种传统文化表现形式(如民俗活动、表演艺术、传统消费等) 和文化空间(如民间礼仪、传统节庆、宗教祭祀等),这些非物质文化遗产是各民族先民在历史长河中遗留下来的文化结晶。

非遗标志

项目概述:

为全面了解全国各省市地区非遗项目的分布,对各个省市的非遗项目全面了解;为进一步提高人民群众非物质文化遗产保护意识,传承、弘扬中华优秀传统文化,营造非遗保护良好社会氛围,文化和旅游部在遗产日前后集中开展系列非遗宣传展示活动。

非遗保护

技术:

Python+requests+Fiddler+Tableau可视化

我们要抓取的信息,项目序号、项目编号、公布时间、类别、所属地区、类型、申报地区或单位、保护单位

清单项目信息

实现思路:打开网站获取项目清单Url,逐条进行爬取后存储为xlsx文件

实际操作过程发现,清单项目被隐藏,用fiddler抓包,找到清单项目Url,分析后发现项目Url由两部分组成:前缀:http://www.ihchina.cn/project_details/ + 项目编号:12177(最小),没有进行加密

网站一共有3145各项目:最后一个编号为:15330(最大),  这不刚好3000多个,抓包都不用了,完美


代码:

#导入相关模块

import requests

import json

import time

from lxmlimport etree

import xlsxwriter

#定义获取项目信息

item_name= []                                #项目名称

item_order_number= []                  #项目序号

item_number= []                            #项目编号

open_time= []                                #公开时间

category= []                                  #类别

region_of_origin= []                     #所属地区

item_type= []                               #类型

application_area_or_unit= []      #申报地区或单位

protect_unit= []                          #保护单位

content= []                                 #概述

#请求过程

detail_url= "http://www.ihchina.cn/project_details/"

#此处自定义长度

for nin range(12177, 12190):       

    request_url= detail_url+ str(n)

    html= requests.get(request_url).text

    html_data= etree.HTML(html)

    #获取相关信息

    item_n= html_data.xpath('//div[@class="h30"]/text()')

    i_o_n= html_data.xpath('//div[@class="table"]//tr[1]/td[1]/div/text()')

    i_n= html_data.xpath('//div[@class="table"]//tr[1]/td[2]/div/text()')

    o_t= html_data.xpath('//div[@class="table"]//tr[2]/td[1]/div/text()')

    cate= html_data.xpath('//div[@class="table"]//tr[2]/td[2]/div/text()')

    r_o_o= html_data.xpath('//div[@class="table"]//tr[3]/td[1]/div/text()')

    i_t= html_data.xpath('//div[@class="table"]//tr[3]/td[2]/div/text()')

    a_a_o_u= html_data.xpath('//div[@class="table"]//tr[4]/td[1]/div/text()')

    p_u= html_data.xpath('//div[@class="table"]//tr[4]/td[2]/div/text()')

    con= html_data.xpath('//div[@class="text"]/div/text()')

    #保存相关信息

    item_name.append(item_n[0])

    item_order_number.append(i_o_n[0].split(':')[1])

    item_number.append(i_n[0].split(':')[1])

    open_time.append(o_t[0].split(':')[1])

    category.append(cate[0].split(':')[1])

    region_of_origin.append(r_o_o[0].split(':')[1])

    item_type.append(i_t[0].split(':')[1])

    application_area_or_unit.append(a_a_o_u[0].split(':')[1])

    protect_unit.append(p_u[0].split(':')[1])

    str_con=''

    for xin con:

        str_con+= x

    content.append(str_con.split(':')[1])

    #显示相关信息

    print("已完成%.2f" % ((n-12177)/3154*100) + "%")

workbook= xlsxwriter.Workbook('China非遗项目编号.xlsx')

worksheet= workbook.add_worksheet("项目基本信息")

title= ['项目名称','项目序号','项目编号','公开时间','类别','所属地区','类型','申报地区或单位','保护单位','概述']

worksheet.write_row('A1', title)

worksheet.write_column('A2', item_name)

worksheet.write_column('B2', item_order_number)

worksheet.write_column('C2', item_number)

worksheet.write_column('D2', open_time)

worksheet.write_column('E2', category)

worksheet.write_column('F2', region_of_origin)

worksheet.write_column('G2', item_type)

worksheet.write_column('H2', application_area_or_unit)

worksheet.write_column('I2', protect_unit)

worksheet.write_column('J2', content)

workbook.close()


Tableau可视化

全国非遗数量分布 浙江省非遗类别

注:数据全部来源网络,官网也有可视化,其它功能自行探索

上一篇下一篇

猜你喜欢

热点阅读