使用C#/.NET解析Wiki百科数据实现获取历史上的今天

news/2024/9/20 17:26:19/文章来源:https://www.cnblogs.com/weskynet/p/18307989
创建一个webapi项目做测试使用。
0
 
创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等
0
创建一个Http请求帮助类以及方法,用于获取指定URL的信息
0
 
使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部分的内容,位于Json的revisions字段内
0
定义有关实体类,用于把收到的json数据转换为对象
0
根据转换的对象,可以看到对象内所有需要的内容,都在Content字段里面了。由于不知道是否存在多层结构,所以此处使用循环来遍历内容。先搭建个模子。
0
 
编写一个正则表达式,根据规律,可以识别出,每个词条都是以[]的形式存在,并且存在嵌套内容,所以做一个数据清理,清理嵌套抽重复的数据。
0
解析出来的新文本,看起来内容舒服一点了。然后我们只需要获取[[xx年]]的这些词行数据,所以可以继续做个数据清理,匹配正则表达式
0
 
根据匹配的正则表达式内容,做个遍历输出
0
查看输出的内容,可以看到已经被过滤成功了:
0
不过默认是繁体字,咱们再完善下,做成简体字。先安装一个古老的包:ChineseConverter 有提示不用管,能用。
0
然后直接调用即可:
string simplifiedText = ChineseConverter.Convert(繁体中文字符串, ChineseConversionDirection.TraditionalToSimplified);
然后重新跑一下,可以看到繁体变成了简体了。
0
最后,剩下的一些括号等符号,或者特殊字符,只需要做一个全局替换即可。以及如果需要解析其他内容,也可以自行再开发一个对应的正则表达式即可。
 
如需以上源码,可在个人公众号【Dotnet Dancer】后台回复“历史上的今天” 即可获取以上源码。 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嘿!通义灵码周边「超大鼠标垫」上线啦,更多玩法等待解锁

嘿!通义灵码周边「超大鼠标垫」上线啦,更多玩法等待解锁【领鼠标垫】简单3步体验通义灵码,即可领取灵码限量版超大鼠标垫! 体验通义灵码升级模型和新功能,贏灵码限量周边和大奖! 两种活动玩法,丰富好礼送不停,快来参与吧! 【玩法一】完成安装、学习、体验通义灵码简单…

OceanBase 金融项目优化案例(union all 改写)

在工单系统上看到有一条sql问题还没解决,工单描述看到压测场景被cpu资源被这条sql打爆,目前影响到项目进度,比较紧急。 直接联系这位同学看看是否需要帮忙。 慢SQL:SELECT task.*,sc01.aab300 …

【Linux网络】Linux网络协议栈问题汇集

Linux本机与本机socket通信会走网卡吗? 1.127.0.0.1本机网络IO需要经过网卡吗? 不需要经过网卡,即使把网卡拔了本机网络还是可以正常使用的。 本机网络IO的内核执行流程:跨机网络IO的流程:2.数据包在内核中是什么走向,和外网发送相比流程上有什么区别? 本机网络 IO 和跨…

laravel11: 给接口增加签名验证

一,添加controller/中间件/路由 1,添加中间件 liuhongdi@lhdpc:/data/site/gsapi$ php artisan make:middleware ApiSignINFO Middleware [app/Http/Middleware/ApiSign.php] created successfully. 2,添加路由: 在routes/api.php文件中 Route::controller(VirtualControlle…

Slimes

这个看官方题解就好了,解释一下官方题解 首先一个很大的前提(也比较显然),就是为了达到最优的情况,我们只会让一个史莱姆一直吃,而不会让两个史莱姆都吃,最后再让其中一个史莱姆将另一个史莱姆吃掉这一个区间指的是,只有这个区间的史莱姆进行互相吃,相当于忽略了区间外…

大屏可视化看板变形问题和分辨率问题的解决办法

关于大屏可视化,好看的画面总是千篇一律,但是遇到的问题,可谓是五花八门,就比如画面变形问题,模糊问题。做一个可视化画面,电脑上显示好好的↓ 实际投出来↓ 画面拉长了压扁了扭曲变形…… 回到电脑上一顿调,没啥用,还是变形…… 那种无力感,经历过画面工程师懂的都…

cerebro 报错: Oops, cannot start the server. com.google.common.util.concurrent.UncheckedExecutionExcep

@目录前言环境异常修改方案第二次报错修改方式成功 前言 使用 elasticsearch + springboot 实现新闻搜索功能: https://javapub.net.cn/star/project/news-search-es/ 遇到的错误记录。 环境cerebro 下载地址: https://github.com/lmenezes/cerebro使用了最新的版本: cerebr…

manim边学边做--Matrix

在代数问题中,矩阵是必不可少的工具,manim中提供了一套展示矩阵(Matrix)的模块,专门用于在动画中显示矩阵格式的数据。关于矩阵的类主要有4个:Matrix:通用的矩阵 IntegerMatrix:元素是整数的矩阵 DecimalMatrix:元素包含小数的矩阵 MobjectMatrix:元素可以是图形的矩…

开源大数据平台的部署(来自工作日志)

开源大数据平台部署 主要步骤 易错点这篇博客内容是我在安装开源hadoop 数据平台时候的工作日志,里面记录了部署平台的主要过程以及容易出错的步骤。一,主要组件包括:二,部署环境规划:3台机器系统:Centos 7.9java: 1.8.220 三,部署顺序: 离线处理组件(主线组件):…

Qt - QtWebEngineWidgets模块

1、QtWebEngineWidgets模块 #include <QtWebEngineWidgets>QT += webenginewidgets1.1 QWebEnginePage 示例代码: #include <QtWebEngineWidgets> #include <QWebEnginePage>//1、创建一个新的 QWebEnginePage 实例:page = new QWebEnginePage(this);//2、…