C#实战:从EMLOG导出博客文章并安全存入MySQL(含代码案例)
大家好,我是零点博客的博主。前阵子在整理过往技术文章时,发现以前在EMLOG上写的很多干货散落在不同的目录里,直接复制太费劲,于是动了心思,想写个工具把数据整整齐齐地导出来。
这次的需求很明确:用C#写一个控制台程序,模拟爬虫去抓取EMLOG博客列表,然后通过正则提取内容,最后安全地存入本地MySQL数据库。 很多新手容易忽略数据安全,这就显得尤为重要了。下面我把这部分的底层逻辑和代码案例拆解出来,希望能帮到大家。
一、 整体架构思路
整个过程其实就是后端C#开发 + 正则解析 + MySQL数据库操作的集合。我们不需要搭建复杂的Web服务,一个Console Application就能搞定。核心难点在于如何优雅地处理字符串解析,以及如何杜绝SQL注入。
二、 核心代码案例:模拟爬虫与正则提取
首先,我们需要通过HTTP请求获取网页源码。对于EMLOG这类静态博客,源码里通常包含了文章标题和链接。这里我们用到C#的Regex类。
using System;
using System.Net.Http;
using System.Text.RegularExpressions;
namespace ZeroPointBlog_Crawler
{
class Program
{
static async Task Main(string[] args)
{
// 模拟访问零点博客的文章列表页
string url = "https://blog.example.com/post/";
using (HttpClient client = new HttpClient())
{
// 设置请求头,模拟浏览器,防止被简单的反爬虫拦截
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 ...");
string htmlContent = await client.GetStringAsync(url);
// 使用正则表达式提取文章标题
// 这里的正则需根据实际的EMLOG HTML结构调整
Regex titleRegex = new Regex(@"]*>([^<]+)
", RegexOptions.IgnoreCase);
MatchCollection matches = titleRegex.Matches(htmlContent);
Console.WriteLine($"找到 {matches.Count} 篇文章,开始解析...");
}
}
}
}
这段代码展示了如何发起请求并提取数据,非常基础但实用。如果你在做在线工具开发,也可以直接把这段逻辑封装成Web接口供前端调用。
三、 SQL注入防护与预处理语句(避坑指南)
很多初学者拿到数据后,喜欢直接用字符串拼接SQL,比如:string sql = "INSERT INTO posts VALUES('" + title + "')"。这简直是打开杀猪盘。万一标题里包含单引号,SQL就会报错甚至被黑客利用。
正确的做法是使用预处理语句(Parameterized Queries)。这是MySQL安全防护的基石。
using (MySqlConnection conn = new MySqlConnection(connString))
{
await conn.OpenAsync();
// 注意:参数用@开头,并且要对应数组索引
string sql = "INSERT INTO articles (title, content) VALUES (@Title, @Content)";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
// 添加参数,C#会自动处理转义
cmd.Parameters.AddWithValue("@Title", "我的第一篇C#文章");
cmd.Parameters.AddWithValue("@Content", "这里是正文内容...");
int rowsAffected = await cmd.ExecuteNonQueryAsync();
Console.WriteLine($"成功插入 {rowsAffected} 行数据");
}
}
四、 JSON/XML 数据解析与格式化工具
在爬取过程中,如果你遇到API接口返回的JSON数据,C# .NET Core自带了强大的解析能力,配合JavaScriptSerializer或Json.NET(Newtonsoft.Json)使用。
为了体现HTML/CSS/JS前端开发的灵活性,我顺便写了一个简单的HTML页面示例,展示如何用JS写一个JSON格式化工具:
JSON在线格式化工具
五、 总结与避坑经验
做爬虫和后端开发,最怕的就是只写业务逻辑而不考虑安全。通过上面的代码案例,大家可以发现:
- 正则表达式是解析网页的神器,但要针对不同模板写不同的Regex。
- SQL预处理语句是防止注入的唯一正途,永远不要相信用户的输入。
- 如果是做在线工具,注意前后端分离,后端负责数据处理,前端负责展示。
这套流程我亲测在Windows环境下运行稳定。如果你对C#结合PHP后端的架构迁移感兴趣,欢迎在零点博客留言交流!



评论一下吧
取消回复