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

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

  1. 使用JWPL (Java Wikipedia Library)操作维基百科数据

    使用JWPL (Java Wikipedia Library)操作维基百科数据 1. JWPL介绍 JWPL(Java Wikipedia Library)是一个开源的访问wikipeida数据的Ja ...

  2. 使用word2vec对中文维基百科数据进行处理

    一.下载中文维基百科数据https://dumps.wikimedia.org/zhwiki/并使用gensim中的wikicorpus解析提取xml中的内容 二.利用opencc繁体转简体 三.利用 ...

  3. 解析json格式数据

    实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...

  4. js读取解析JSON类型数据(转)

    谢谢博主,转自http://blog.csdn.net/beyond0851/article/details/9285771 一.什么是JSON? JSON(JavaScript Object Not ...

  5. NSXMLParser解析本地.xml数据(由于like7xiaoben写的太好了,我从她那里粘贴过来的)

    NSXMLParser解析简要说明 .是sax方法解析 .需要创建NSXMLParser实例 (alloc) 并创建解析器 (initWithData:) 为解析器定义委托 (setDelegate: ...

  6. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  7. Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )

    关于Xml的序列化和反序列化: 可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html WebService解析返回的数据DataSet ...

  8. Android 通过Dom, Sax, Pull解析网络xml数据

    这篇文章不是完全原创,XML解析的部分参考了 liuhe688 的文章.文章地址:http://blog.csdn.net/liuhe688/article/details/6415593 这是一个几 ...

  9. Swift - 解析XML格式数据(分别使用GDataXML和DDXML)

    在做一些应用的时候经常需要用到XML解析,比如获取Web Service数据,读取RSS新闻或者博客数据源.下面演示了两个非常方便高效的XML库在Swift里的调用方法. 假设需要被解析的XML数据文 ...

  10. Android上解析Json格式数据

    package com.practice.json; import org.json.JSONArray; import org.json.JSONException; import org.json ...

随机推荐

  1. Excel功能学习

    字符串和单元格内容拼接函数CONCATENATE a@马踏星空:=CONCATENATE(D2,E2,F2)拼接指定单元格内字符串,无分隔符 a@马踏星空:=CONCATENATE(I4," ...

  2. win10 使用idea 构建一个ssm的模板maven项目

    一.创建一个maven项目   1.1建立一个module作为web项目   File->New->project 选择maven,默认jdk,下面的列表什么都不选,next->输入 ...

  3. 数据驱动ddt安装3种方式_unittest_Python

    命令行安装   pip install ddt -i  管理员运行命令提示符 pycharm设置里安装 pycharm Python Packages里安装

  4. Android 12(S) Binder(一)

    今天开始了解一下binder,就先从ServiceManager开始学习. 网上的相关博文普遍是Android 11之前的,阅读时对比Android 11或12的代码发现有很多内容找不到了,比如 fr ...

  5. WPF+Emgucv实现在图像上画出感兴趣的区域 并进行掩膜获取 得到图像均值 和简单的 漫水填充

    <Grid.RowDefinitions></Grid.RowDefinitions> <Grid> <UniformGrid Columns="2 ...

  6. WPF中 x:Name和Name的区别

    x:Name 唯一地标识 XAML 定义的对象,以便于从代码隐藏或通用代码中访问对象图中实例化的对象.x:Name 一旦应用于支持编程模型,便可被视为与由构造函数返回的用于保存对象引用或实例的变量等效 ...

  7. claude3国内API接口对接

    众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢?这样,用户就 ...

  8. Linux扩展篇-shell编程(五)-流程控制(一)-if语句

    基本语法: (1)单分支 if [ condition ];then statement(s) fi 或 if [ condition ] then statement(s) fi (2)多分支 if ...

  9. 20 套监控平台统一成 1 套 Flashcat,国泰君安监控选型提效之路

    author:宋庆羽-国泰君安期货 运维工作最重要的就是维护系统的稳定性,其中监控是保证系统稳定性很重要的一环.通过监控可以了解系统的运行状态,及时发现问题和系统隐患,有助于一线人员快速解决问题,提高 ...

  10. element table根据条件隐藏复选框

    在<el-table>标签加 :cell-class-name="cellClass" 在 <el-table-column type="selecti ...