写在前面:为什么非要用 C# 操作 EMLOG?
我是零点博客的博主,平时喜欢在站里记录各种**建站开发**的心得。以前用 EMLOG 写**技术笔记**,都是直接在后台写好再复制出来,久了之后想统一整理或者做数据备份,纯靠手动粘贴太费劲了。
最近手头有个大项目,需要从零点博客导出几百篇**C#**相关的代码笔记。于是我决定动用咱们的本命语言——C#,写个控制台小工具,直接去 EMLOG 的接口“偷”数据。今天就把我搞定的流程分享出来,全是干货,不想被机械营销文浪费时间的兄弟看过来。
第一步:准备 EMLOG 的 API 接口信息
首先,得知道 EMLOG 是怎么暴露数据的。标准的 PHP 后端通常会有个 Data API。
- 文章列表接口:比如 /?action=ajax_get_page
- 参数:你需要准备好 API 的 Key 和 Token,这部分代码里我会用变量代替,大家照着 EMLOG 的后台配置去填。
这里有个坑要提醒:EMLOG 默认接口可能没有做严格的鉴权,生产环境一定要把 config.php 的安全设置改一下,不然你的**技术笔记**全被扒光了。
第二步:C# 实现数据抓取
新建一个控制台项目,引用 Newtonsoft.Json 处理 JSON 数据非常方便。我们模拟一个 HTTP 请求,获取文章列表。
string apiUrl = "http://localhost/emlog/api/get_articles";
var payload = new
{
page = 1,
count = 50
};
string json = await PostJsonAsync(apiUrl, JsonConvert.SerializeObject(payload));
var result = JsonConvert.DeserializeObject<ApiResponse>(json);
上面的 PostJsonAsync 是我自己封装的方法,其实就是标准的 HttpClient 发送 Post 请求。拿到数据后,解析出 Title 和 Content,这就是**技术笔记**的雏形了。
第三步:构建输出格式,保存为 Markdown
为了方便以后在本地查看,我打算把 EMLOG 的 HTML 格式转换成 Markdown。
foreach(var item in result.Data.Items)
{
string mdTitle = $"## {item.Title} (来自零点博客)";
string mdContent = HtmlToMarkdown.Convert(item.Content); // 这里假设有个第三方库
string fullPath = $"D:\\Notes\\{item.Id}.md";
File.WriteAllText(fullPath, $"{mdTitle}\n\n{mdContent}");
}
看到没?这一步就把**建站开发**的成果直接沉淀下来了。对于程序员来说,把所有杂乱的网页笔记变成纯文本,是极大的解脱。
第四步:如何调用模板标签?(进阶玩法)
如果你不想自己写接口,只是想在主题里显示,那就要用到 EMLOG 的模板标签了。比如在 echo_log.php 里:
<?php
// 输出作者昵称
echo $author;
?>但对于做**C#**项目的同学,直接用程序去生成 HTML 内容,然后丢给浏览器展示,效率往往更高。这种**技术笔记**的整理方式,让我的开发效率至少提升了 30%。
总结与避坑指南
这也就是**建站开发**的乐趣所在吧。从零点博客出发,通过代码将数据打通,把零散的知识点串联起来。
最后提醒两点:
- 网络请求失败时一定要加重试机制,EMLOG 默认有时钟不同步问题。
- 关于 HTML 转 Markdown,自己写正则容易漏字,推荐用现有的开源库,别为了省几兆内存去造轮子。



评论一下吧
取消回复