C# 爬取小说

项目功能简单介绍:
获取小说保存到本地
环境:

  • C#语言,
  • VS2022,
  • .net6.0,
  • Window 11,
  • 基于AntdUI框架

代码介绍:

  • AntdUI 页面类库
  • CrawlingNovels 主程序
    在这里插入图片描述
    实现思路:
    1.网上查询小说网址
    2.爬取主页面所有章节的HTML链接
    3.循环爬取HTML章节链接内容
    4.保存所有章节内容到text
    程序截图
    在这里插入图片描述
    代码链接
    1.Gitee
    2.https://gitee.com/lugangtian/crawling-novels.git

**视频演示

C# 爬取小说演示


**

C#实现爬取网页实时数据有多种方法,以下结合参考内容介绍两种常见方式: ### 使用DotnetSpider框架 DotnetSpider是一个开源的网页爬取模块,属于轻量、高效的爬取框架,依赖HtmlAgilityPack模块,按其规则继承实现爬取类及数据解析类即可完成网页内容爬取。以爬取B站视频检索页面为例: 1. **安装DotnetSpider包**:新建Winform项目,在Nuget包管理器中搜索并安装DotnetSpider包。 2. **定义数据结构**:定义数据结构来保存视频检索结果。 ```csharp public class BiliBiliSearchData { public string Title { get; set; } = string.Empty; public string Uper { get; set; } = string.Empty; public string UpDate { get; set; } = string.Empty; } ``` 3. **分析网页结构**:使用postman获取网页返回结果,并将结果复制到HBuilder X中分析网页结构,确定数据所在的元素位置。 4. **实现爬取和解析逻辑**:按DotnetSpider规则继承实现爬取类及数据解析类完成网页内容爬取和数据解析。 ### 手动实现爬取逻辑 手动实现爬取逻辑可以灵活控制爬取过程,以爬取地区划分数据为例: ```csharp // 从index页面开始爬取,从第2、3级里获取的地址不完整,要自动补上 private static async Task<List<Node>> getDatas(string url = "index.html", string parentId = null, int leve = -1) { var txt = await getPage(url); var items = getMatches(txt); string preUrl = null; for (var i = 0; i < leve; i++) { preUrl += string.Concat(parentId.AsSpan(2 * i, 2), "/"); } List<Node> result = new(); await Parallel.ForEachAsync(items, async (match2, cancel) => { List<Node> Children = null; if (!string.IsNullOrEmpty(match2.path)) { Children = await getDatas(preUrl + match2.path, match2.id, leve + 1); } var data = new Node { Id = match2.id, Name = match2.name, Children = Children }; lock (result) result.Add(data); }); return result.OrderBy(t => t.Id).ToList(); } var task = getDatas(); var rlt = task.Result; var json = JsonConvert.SerializeObject(rlt, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(@".\datas.json", json); ``` 此代码通过递归调用`getDatas`方法,从指定页面开始爬取数据,并将结果保存到JSON文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值