基于Python的历史通史史料文献网站实战项目开发
IT跃迁谷毕设展
🏆个人简介:我是一名从事计算机行业十年并具有丰富经验的计算机猿人,曾经在各种编程语言和软件项目中摸爬滚打,从最初的小菜鸟到后来的计算机专业培训讲师。热爱分享经验,喜欢录制项目讲解实战视频,也喜欢带人。擅长Python、Java、大数据、爬虫、小程序、安卓、C#/.NET、PHP、Golang、机器学习等。🏆
1️⃣Python实战项目
2️⃣ Java实战项目
3️⃣大数据实战项目
4️⃣微信小程序实战项目
5️⃣机器学习实战项目
目录
❤️❤️文末获取计算机实战项目源代码❤️❤️
基于Python的历史通史史料文献网站-项目背景
随着互联网的普及和数字技术的快速发展,大量的历史通史史料文献被数字化并广泛传播。这些史料文献对于学术研究、文化传承和普及历史知识具有重要意义。然而,目前存在一些问题,使得这些数字化的历史通史史料文献并未得到充分利用和有效整合。
首先,数字史料的来源复杂,包括各种古籍、报纸、期刊、档案等,其质量和完整性也有很大差异。其次,这些史料文献的语言、格式和元数据标准不一,给数据挖掘和信息提取带来了困难。最后,缺乏一个统一的历史通史史料文献平台,使得研究人员和公众难以快速、全面地获取和利用这些资源。
为解决上述问题,本课题旨在开发一个基于Python的历史通史史料文献网站,通过对数字化历史通史史料文献的整合、清洗和标准化,实现数据的高效提取和知识发现。同时,通过构建用户界面和交互功能,使研究人员和公众能够更加便捷地浏览、检索和使用这些资源。
通过本课题,我们将为历史学界、文化传承领域和公众提供一个高效、便捷的历史通史史料文献获取平台,推动历史研究的深入发展,提高公众对历史文化的认识和了解。
基于Python的历史通史史料文献网站-技术选型
开发语言:Python语言
数据库:MySQL
系统架构:B/S
后端框架:Django/Flask框架
前端:HTML+CSS+JavaScript+Vue+ElementUI
开发工具:PyCharm
基于Python的历史通史史料文献网站-演示图片
基于Python的历史通史史料文献网站-文档展示
基于Python的历史通史史料文献网站-代码参考
class Base(object):
"""
`Base`类是所有图形类的基类,提供部分初始化参数和基本的方法
"""
def __init__(
self,
width=800,
height=400,
renderer=constants.CANVAS_RENDERER,
page_title=constants.PAGE_TITLE,
extra_html_text_label=None,
is_animation=True,
):
"""
:param width:
画布宽度,默认为 800(px)
:param height:
画布高度,默认为 400(px)
:param renderer:
指定使用渲染方式,有 'svg' 和 'canvas' 可选,默认为 'canvas'。
3D 图仅能使用 'canvas'。
:param page_title:
指定生成的 html 文件中 <title> 标签的值。默认为 'Echarts'
:param extra_html_text_label:
额外的 HTML 文本标签,(<p> 标签)。类型为 list,list[0] 为文本内容,
list[1] 为字体风格样式(选填)。如 ["this is a p label", "color:red"]
:param is_animation:
是否开启动画,默认为 True。V0.5.9+
"""
self._option = {}
self._js_dependencies = set()
self._chart_id = uuid.uuid4().hex
self.width, self.height = width, height
self.renderer = renderer
self._page_title = page_title
self._js_dependencies = {"echarts"}
self.event_handlers = {}
self.theme = None
self.use_theme(CURRENT_CONFIG.theme)
self.extra_html_text_label = extra_html_text_label
self.is_animation = is_animation
@property
def chart_id(self):
return self._chart_id
@chart_id.setter
def chart_id(self, chart_id):
self._chart_id = chart_id
@property
def options(self):
return self.get_options()
@property
def js_dependencies(self):
return utils.merge_js_dependencies(self._js_dependencies)
@property
def page_title(self):
return self._page_title
def get_options(self, remove_none=True):
if remove_none:
return utils.remove_key_with_none_value(self._option)
else:
return copy.deepcopy(self._option)
def use_theme(self, theme_name):
self.theme = theme_name
if theme_name not in constants.BUILTIN_THEMES:
self._js_dependencies.add(self.theme)
return self
def on(self, event_name, handler):
self.event_handlers[event_name] = handler
return self
def print_echarts_options(self):
"""
打印输出图形所有配置项
"""
snippet = TRANSLATOR.translate(self.options)
print(snippet.as_snippet())
def get_echarts_options(self):
"""
返回图形所有配置项
"""
snippet = TRANSLATOR.translate(self.options)
return snippet.as_snippet()
def show_config(self):
"""
打印输出图形所有配置项
"""
deprecated_tpl = "The {} is deprecated, please use {} instead!"
warnings.warn(
deprecated_tpl.format("show_config", "print_echarts_options"),
DeprecationWarning,
)
self.print_echarts_options()
def render_embed(self):
"""
渲染图表的所有配置项,为 web pages 服务,不过需先提供所需要的js 依赖文件
"""
env = engine.create_default_environment(constants.DEFAULT_HTML)
html = env.render_container_and_echarts_code(self)
return Markup(html)
def get_js_dependencies(self):
"""
声明所有的 js 文件路径
"""
return CURRENT_CONFIG.produce_html_script_list(self._js_dependencies)
def render(
self,
path="render.html",
template_name="simple_chart.html",
object_name="chart",
**kwargs
):
_, ext = os.path.splitext(path)
_file_type = ext[1:]
env = engine.create_default_environment(_file_type)
env.render_chart_to_file(
chart=self,
object_name=object_name,
path=path,
template_name=template_name,
**kwargs
)
@staticmethod
def cast(seq):
"""
转换数据序列,将带字典和元组类型的序列转换为 k_lst,v_lst 两个列表
元组列表
[(A1, B1), (A2, B2), ...] -->
k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]
字典列表
[{A1: B1}, {A2: B2}, ...] -->
k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]
字典
{A1: B1, A2: B2, ...} -- >
k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]
:param seq:
待转换的序列
:return:
"""
k_lst, v_lst = [], []
if isinstance(seq, list):
for s in seq:
if isinstance(s, tuple):
_attr, _value = s
k_lst.append(_attr)
v_lst.append(_value)
elif isinstance(s, dict):
for k, v in s.items():
k_lst.append(k)
v_lst.append(v)
elif isinstance(seq, dict):
for key in sorted(list(seq.keys())):
k_lst.append(key)
v_lst.append(seq[key])
return k_lst, v_lst
def render_notebook(self):
warnings.warn(
"Implementation has been removed. "
+ "Please pass the chart instance directly to Jupyter."
+ "If you need more help, please read documentation"
)
def _get_all_options(self, **kwargs):
return get_other_options(**kwargs)
def _repr_html_(self):
"""
渲染配置项并将图形显示在 notebook 中
chart/page => charts
chart.js_dependencies => require_config => config_items, libraries
:return A unicode string.
"""
if CURRENT_CONFIG.jupyter_presentation == constants.DEFAULT_HTML:
require_config = CURRENT_CONFIG.produce_require_configuration(
self.js_dependencies
)
config_items = require_config["config_items"]
libraries = require_config["libraries"]
env = engine.create_default_environment(constants.DEFAULT_HTML)
return env.render_chart_to_notebook(
charts=(self,), config_items=config_items, libraries=libraries
)
elif CURRENT_CONFIG.jupyter_presentation == constants.NTERACT:
env = engine.create_default_environment(constants.DEFAULT_HTML)
return env.render_chart_to_notebook(
chart=self, template_name="nteract.html"
)
else:
return None
def _repr_svg_(self):
content = self._render_as_image(constants.SVG)
if content:
# fix alignment problem in notebook
content = content.replace("position: absolute;", "")
return content
def _repr_png_(self):
return self._render_as_image(constants.PNG)
def _repr_jpeg_(self):
return self._render_as_image(constants.JPEG)
def _render_as_image(self, file_type):
"""
This is an internal function to serve _repr_jpeg_,
_repr_png_ and _repr_svg_.
:param file_type: the parameter is mostly image file types.
"""
if CURRENT_CONFIG.jupyter_presentation != file_type:
return None
if self.renderer == constants.SVG_RENDERER:
if file_type != constants.SVG:
raise exceptions.InvalidConfiguration(
"svg renderer produces only svg image."
)
elif file_type not in [constants.JPEG, constants.PNG]:
# CANVAS_RENDERER here
raise exceptions.InvalidConfiguration(
"svg output requires svg renderer."
)
env = engine.create_default_environment(file_type)
tmp_file_handle, tmp_file_path = mkstemp(suffix="." + file_type)
content = env.render_chart_to_file(
chart=self, path=tmp_file_path, verbose=False
)
os.close(tmp_file_handle)
return content
def _add_chinese_map(self, map_name_in_chinese):
name_in_pinyin = CURRENT_CONFIG.chinese_to_pinyin(map_name_in_chinese)
self._js_dependencies.add(name_in_pinyin)
1️⃣Python实战项目
2️⃣ Java实战项目
3️⃣大数据实战项目
4️⃣微信小程序实战项目
5️⃣机器学习实战项目
有问题可以在评论区交流~
如有问题可以👇👇获取联系方式👇👇