零点博客实战:C#爬虫集成EMLOG与MySQL数据安全处理

大家好,我是零点博客的博主。今天想和大家分享一篇深度的技术笔记,内容主要是关于如何通过C#后端开发技术,实现一个自动化的内容聚合系统,最终集成到我的EMLOG博客中。在这个过程中,我踩了不少坑,也深刻体会到了MySQL数据库安全的重要性。

需求背景与架构思路

平时工作忙,更新零点博客是个体力活。最近我想折腾点高级玩法,于是决定自己写一个爬虫开发模块。我的想法很简单:C#后端负责去别的网站抓取数据,存入数据库,然后EMLOG通过读取数据库生成文章。

这套技术栈涉及到了接口开发、JSON/XML数据解析以及底层的数据库交互。

核心代码实现:从HTTP请求到数据入库

首先,我们需要搭建一个Console Application作为后端服务。这里的关键在于如何优雅地处理请求。

1. 爬虫获取数据

我用到了最经典的HttpClient和正则表达式。为了精准匹配文章标题,我反复调试了正则规则,确保只抓取标题和正文,避免多余字符。

using (var client = new HttpClient())
{
    var html = await client.GetStringAsync("https://target-site.com/articles");
    // 使用正则提取关键信息
    var match = Regex.Match(html, @"<h2>([^</h2>]+)</h2>");
    if (match.Success)
    {
        var title = match.Groups[1].Value;
        SaveToEMLOG(title);
    }
}

2. 接口开发与JSON解析

抓取到的数据需要以接口形式提供给EMLOG的前端。为了方便解析,我统一使用JSON格式传输。

public class ArticleDto
{
    public string Title { get; set; }
    public string Content { get; set; }
}

// 返回JSON示例
return Json(new ArticleDto { Title = "爬虫测试标题", Content = "正文内容..." });

避坑指南:SQL注入与预处理

在将抓取到的数据插入MySQL数据库时,我一开始直接用字符串拼接SQL语句,结果报了一堆错。后来我查阅了大量资料,明白了一个道理:SQL注入防护必须使用预处理语句。

在代码中,不要直接拼接变量,而是使用参数化查询。这是所有后端开发必须遵守的红线。

string sql = "INSERT INTO emlog_post (title, content, uid) VALUES (@title, @content, 1)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@title", title); // 安全插入
    cmd.ExecuteNonQuery();
}

前端与调试:HTML/CSS/JS的配合

当数据成功入库后,我的HTML前端页面需要能实时看到变化。这里就用到了JSON解析和DOM操作。

我在JavaScript中写了一个简单的函数,每隔几秒轮询一下接口,拿到JSON数据后动态插入到页面列表中。调试的时候发现有时候CSS样式错乱,后来检查了Selector的选择器权重问题,才解决。

总结

通过这次开发,我完成了从C#后端开发到前端展示的全链路操作。这套系统目前运行在零点博客的后台,大大提升了我的内容更新效率。希望这篇包含源码案例的技术笔记能帮到正在学习后端和爬虫的小伙伴们,如有问题欢迎在评论区交流!